Implement PyNaCl backend for Ed25519 keys (part of RFC 8037)#100
Implement PyNaCl backend for Ed25519 keys (part of RFC 8037)#100blag wants to merge 5 commits intompdavis:masterfrom
Conversation
d011c89 to
dd87583
Compare
Codecov Report
@@ Coverage Diff @@
## master #100 +/- ##
==========================================
- Coverage 96.54% 94.68% -1.86%
==========================================
Files 14 14
Lines 1071 1092 +21
==========================================
Hits 1034 1034
- Misses 37 58 +21
Continue to review full report at Codecov.
|
|
Oh, and I forgot to mention: all of the code that I added has 100% test coverage. 👍 |
|
I'd really like to see this land in |
|
First, my apologies for taking so long to take a look at this. The only issue I see with this PR is that it introduces a C-based python dependency, which breaks the compatibility with Google App Engine. That said, GAE support has proven to be enough of a pain that I am likely to drop support for it entirely to avoid these complications trying to support further extensions of the JOSE framework. I would like to officially drop support for GAE compatibility before merging this PR. I will see about getting that done. |
|
@blag I have successfully talked myself about worrying too much about getting a pure-python route for now. If we get these merge conflicts resolved, I can get this merged and simply cut a |
|
I think that with a few small changes pure-Python can still be usable. And not having to install software you're not using is always a bonus. First the Ed25519Key imports need to be made so they pass on ImportError both in jose/backends/init.py and jose/jwk.py. |
zejn
left a comment
There was a problem hiding this comment.
If you can change this then pynacl will not be a hard requirement.
|
Are there any insights on whether this branch (after fixing the conflicts of course) will get merged? |
|
Sorry, I lost track of this since my last comment. I'll try to implement the suggested changes and fix the merge conflicts once my life calms down a bit, which should be this or next week. |
|
I rebased this on This is ready for review. |
|
@mpdavis, there's been a lot of work recently gone into sorting out crypto backend implementation details. Does this PR stand a chance of getting merged somewhere soonish? |
|
Any idea when this is likely to go in? |
|
I think it is valid to be frustrated with my level of attention. It makes sense to me to simply accept the offer of help instead of continuing trying to find free time to work on it, only to continue pushing it off. I have sent invites to both @zejn and @blag to collaborate on the project. I do appreciate the offers of help, and I apologize for the frustrating lack of communication on my part. |
|
It would be awesome if development could pick up (again) for this. Especially as it's called |
|
This looks ok to me. |
|
In light of pyca/pynacl#507, I'm going to remove our dependence on encoders. I'll push a few more commits to this PR, get somebody to review the additional commits, then merge it. |
d386b77 to
867f8fb
Compare
|
@mpdavis Thank you for adding me as a collaborator, I very much appreciate it. I've had to make the call to stop maintaining other Python packages, so I understand how weighty of a decision it can be. @zejn Sorry to string you along, but do you mind reviewing this one last time? I removed the reliance on PyNaCl's decoders since they are being removed in pyca/pynacl#507. |
|
As per this conversation, I'm closing this PR. |
RFC8037 is an extension to JOSE that includes Ed25519 and Ed448 keys.
This PR adds support for Ed25519 keys in a new
naclbackend using the wonderfulPyNaClpackage, and integrates it into the JWK portion of this project.Unfortunately, while Ed448 keys are part of RFC8037, there are no good Python libraries for those keys yet, so support for them was left out. Implementation of that is a good candidate for future work, but will not be considered part of this PR.
This PR should be good to go (assuming it passes CI tests). 😃