Simplified building of authorized_keys public key.

This commit is contained in:
Stephen Fox 2019-02-04 14:27:59 -05:00
parent f2c11b55be
commit f3128143fa
1 changed files with 6 additions and 11 deletions

View File

@ -270,28 +270,23 @@ func (o defaultKeyPair) PrivateKeyPemBlock() []byte {
func (o defaultKeyPair) PublicKeyAuthorizedKeysLine(nl NewLineOption) []byte {
result := gossh.MarshalAuthorizedKey(o.publicKey)
// Remove the mandatory unix new line.
// Awful, but the go ssh library automatically appends
// a unix new line.
result = bytes.TrimSuffix(result, UnixNewLine.Bytes())
if len(strings.TrimSpace(o.name)) > 0 {
// Awful, but the go ssh library automatically appends
// a unix new line.
result = bytes.TrimSuffix(result, UnixNewLine.Bytes())
result = append(result, ' ')
result = append(result, o.name...)
}
switch nl {
case NoNewLine:
result = bytes.TrimSuffix(result, UnixNewLine.Bytes())
case WindowsNewLine:
result = bytes.TrimSuffix(result, UnixNewLine.Bytes())
result = append(result, nl.Bytes()...)
case UnixNewLine:
fallthrough
default:
// This is how all the other "SSH key pair" code works in
// the different builders.
if !bytes.HasSuffix(result, UnixNewLine.Bytes()) {
result = append(result, UnixNewLine.Bytes()...)
}
result = append(result, UnixNewLine.Bytes()...)
}
return result