ssh-key: non-UTF-8 comment support #347
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.
OpenSSH private keys contain a comment field in the binary serialization encoded as an RFC4251
stringtype, which is described as follows:Previously this field was stored using Rust's
Stringtype which constrains the allowed encoding of the comments to UTF-8, leading to a failure to parse keys containing such comments.This has been changed to store a
Vec<u8>, with helper methodscomment_strandcomment_str_lossyto obtain&strreferences, andcommentbytes to get the raw value. The originalcommentmethods have been deprecated.The lossy algorithm decodes as much of the string as possible as UTF-8.
The public key serialization, which encodes the key as a one-line string, uses the lossy encoding of the comment so as to still remain
String-compatible. If there's desire to correct this, it will require more substantial changes to the entire public key decoder/encoder.Fixes #331