Fix OpenSSH encoding of Ed25519/Ed448 #5520
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Encoding of OpenSSH Key V1 is technically listed as an experimental feature so this isn't the most crucial. But in playing with it I discovered the encoding is incorrect when writing the "encrypted" section of Ed25519/Ed448 keys
Currently, we only write the 32 bytes of the Private key. However, the encrypted section is 64 bytes of a "secret" key which includes the private key and public key combined. This is confirmed through a few sources:
This experimental feature seems untested (or I haven't found the right place) so below is some console output. Note the current behavior is missing the private key binary when decoding a key generated from
ssh_file:encode/2. Happy to add tests if there is an expected placeCurrent behavior (from console)
With proposed fix
Proposed fix with fixture