-
Notifications
You must be signed in to change notification settings - Fork 231
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
Reintroduce ExpandedSecretKey funcionality #298
Comments
Per #205, It also doesn't conform to any standard interface for Ed25519 keys, such as the one specified in RFC8032. |
I can definitely see how this API is misuse-prone and aware it isn't a standard interface. We've long considered this behaviour of libolm to be problematic. Still, it's perfectly possible to use it correctly and our crate packages it up safely, without re-exposing the insecure interface. Given this is a backward-incompatible change, resulting in a relatively critical loss of functionality preventing us from ever seamlessly migrating, perhaps it could be considered for reintroduction under a feature flag? Alternatively, many RustCrypto crates offer low level and easy to misuse interfaces under crates or submodules marked as |
It's possible, although the @RustCrypto I would suggest leaving it off the table for a 2.0 release and circling back afterward. Alternatively, you can maintain a fork. I imagine you'll have to do this for many different libraries for different languages, since it's not a standard API. |
An option that might be more in the spirit of a "hazmat" API would be a low-level signing API which accepts parameterized inputs (i.e. private scalar, derivation input, public key Edwards point, message hash), which could potentially also be used to implement constructions like the various flavors of Ed25519-BIP32 |
It's my understanding that
Besides libolm itself, which we're trying to sunset, I don't have to maintain any forks. We are using a single library for all our target languages. It would be nice to keep it this way. |
That would add an extra scalarmult to each signing operation, which would mean it couldn't be composed in terms of the existing implementation, where the corresponding public key is stored in Effectively, we'd be adding an API just to support your nonstandard use case. You can always vendor your own |
@rozbb yeah, that's more or less what I was proposing here, although perhaps even going lower level with it: #298 (comment) Doing that would be a universal solution for everyone who wants to do something nonstandard, so we're not adding one-off nonstandard features every time they come up. |
The things we are using are as follows:
#299 certainly helps, thanks for that. It still feels a bit weird to have to re-define |
Perhaps we could put |
That sounds nice, but helps me only if |
Hi there.
We're using the
dalek
crates in vodozemac as the core for our double ratchet implementation. This is a relatively new library intended to replace our old C based libolm library.Now our problem is that libolm always expands Ed25519 secret keys, which are stored long-term.
As we have many users already using libolm, we would like to transfer this expanded Ed25519 key when we transition our users from libolm to vodozemac. We've looked into updating our
ed25519-dalek
dependency, but found that it is no longer possible to construct anExpandedSecretKey
as the type is no longer public, as per #205.Is there any way to restore this functionality?
The text was updated successfully, but these errors were encountered: