22 lines
572 B
Go
22 lines
572 B
Go
package main
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/binary"
|
|
)
|
|
|
|
// ed25519Line is a public key line with a well-formed ed25519 blob.
|
|
func ed25519Line(seed byte, comment string) string {
|
|
blob := []byte{}
|
|
for _, part := range [][]byte{[]byte("ssh-ed25519"), make([]byte, 32)} {
|
|
part2 := append([]byte(nil), part...)
|
|
if len(part2) == 32 {
|
|
part2[0] = seed
|
|
}
|
|
l := make([]byte, 4)
|
|
binary.BigEndian.PutUint32(l, uint32(len(part2)))
|
|
blob = append(append(blob, l...), part2...)
|
|
}
|
|
return "ssh-ed25519 " + base64.StdEncoding.EncodeToString(blob) + " " + comment
|
|
}
|