-
-
Notifications
You must be signed in to change notification settings - Fork 32
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
improve and refactor the Crypto story in rama #391
Comments
Had an offline discussion about this with @soundofspace . Here's what came out of that:
rama-boring
rama-cryptoWill have the following root structure:
The current goal is to not have to fork This can already be developed as well and also be exposed as The different modules have each their own API definitions but we do want to have some kind of harmony. E.g. while they each might have their different types and function signatures, we must try to align them where it is possible without extra work. E.g. keep symbol names and definitions the same where we anyway have the choice. Examples of what they'll expose:
@soundofspace will pick up this work and it can be done in several steps. |
@soundofspace github now has support for sub tasks, so in case you feel this story is too big as-is, do feel free to split it up where you see fit, in case you feel that structure in github issues is helpful for you. |
Will start work on this now and I'm expecting this to take a very long time until it is completely finished. Also let me know if any other work is blocked on something here, or could be simplified a lot by changes here. Having a list of everything which currently sucks / is hard to do will make this much easier. E.g. on the side I have been working on an acme client and some other stuff, huge pain points there are :
But please report any other issue you are having, or thing that might simplify developer experience a lot so I can see the bigger picture and know what to prioritize. |
I think moving the tls backens to Is I think also the biggest hurddle currently as these API's are too much tangled up with each other. What you list is pretty much anything of UX I can think of as well. Other than that we are currently limited by the bindings of cloudflare, so that probably would be for me another item on that list. |
This story would be about refactoring the code related to crypto and prepare the path for the crypto future of rama. Follow up stories can continue the work started here. There are two aspects to this:
rama-tls-boring
crate. As part of this task you can already create this crate (dummy-style, see rama-socks5 for an example) to already reserve the name next time we publish an alpha version.rama-crypto
crate where we would also house crypto primitives and expose crypto backends as well. Or perhaps we do not need such a crate and we could just exposejwt
in future directly from within rama master crate somewhere.rama-crypto
crate. E.g. do we also expose boring there? Or instead userama-tls-boring
if the boring feature is enabled? or perhaps only have it inrama-crypto
and haverama-tls-backend
use that? All choices feel weird in their own way.(e.g. boring in case that's anyway available)
(2) will have less focus in this story then (1) but I would like that the path regarding this all becomes a lot more clear after we resolve this issue. (1) is however where the focus should be. It will result in some code removal and simplifying certain bits. And all the advanced / low-level controls will move to boring instead of something generic.
Not sure how this will impact
rama::net::tls
andrama::tls
... that will ahve to be figured out. In one hand I think it wil make it possible to keep things a lot easier and just use the crypto backend API's directly instead of abstracting it away. At the same time I do like how easy to use the abstraction layer in the middle is to setup a lot of common stuff... So there's some thought that need to be put here. E.g. there's something to be said with how simple stuff likerama/examples/tls_boring_termination.rs
Line 77 in b9befd3
The text was updated successfully, but these errors were encountered: