Add support for ed25519 host keys

This commit is contained in:
Marko Korhonen 2024-05-09 11:32:47 +03:00
parent 02fc6bb1c3
commit 5f99726988
Signed by: FunctionalHacker
GPG key ID: A7F78BCB859CD890
2 changed files with 26 additions and 25 deletions

View file

@ -20,7 +20,7 @@ source=(
) )
changelog=ChangeLog changelog=ChangeLog
sha256sums=('6c529408125bd0c446162f8d4a16d7262d6b39896d8e6f87d364f7b299203315' sha256sums=('6c529408125bd0c446162f8d4a16d7262d6b39896d8e6f87d364f7b299203315'
'51f44735be81a4488acd9b2b7713a3e61beddd9b167773db0e345adc3b8d693f' '6e6fcb6a1f3b1ffae85a8b72b56b8fd2b221777713d221641d8cbfd2ad5637b3'
'ac69d63ecc672c698582b0fc260dbfe42d71adcdab707f807c8e1113be11abd8') 'ac69d63ecc672c698582b0fc260dbfe42d71adcdab707f807c8e1113be11abd8')
package() { package() {

View file

@ -1,45 +1,46 @@
#!/bin/sh #!/bin/sh
set -e
KEY_TYPES="ed25519 ecdsa rsa"
get_fingerprint() { get_fingerprint() {
keyfile="$1" kf="$1"
dropbearkey -y -f "${keyfile}" | sed -n '/^Fingerprint:/ {s/Fingerprint: *//; p}' dropbearkey -y -f "${kf}" | sed -n '/^Fingerprint:/ {s/Fingerprint: *//; p}'
} }
display_fingerprints() { display_fingerprints() {
for keyfile in "/etc/dropbear/dropbear_rsa_host_key" "/etc/dropbear/dropbear_ecdsa_host_key"; do for kt in $KEY_TYPES; do
if [ -s "${keyfile}" ]; then kf="/etc/dropbear/dropbear_${kt}_host_key"
echo "$(basename "${keyfile}") : $(get_fingerprint "${keyfile}")" if [ -s "${kf}" ]; then
echo "$(basename "${kf}") : $(get_fingerprint "${kf}")"
fi fi
done done
} }
copy_openssh_keys() { copy_openssh_keys() {
osshrsa="/etc/ssh/ssh_host_rsa_key"
osshecdsa="/etc/ssh/ssh_host_ecdsa_key"
dbpre="/etc/dropbear/dropbear_"
return_code=1 return_code=1
if [ -s "$osshrsa" ]; then for kt in $KEY_TYPES; do
dropbearconvert openssh dropbear $osshrsa ${dbpre}rsa_host_key osshkey="/etc/ssh/ssh_host_$kt"
return_code=0 if [ -s "$osshkey" ]; then
fi dropbearconvert \
openssh dropbear \
if [ -s "$osshecdsa" ]; then "$osshkey" \
dropbearconvert openssh dropbear $osshecdsa ${dbpre}ecdsa_host_key "/etc/dropbear/dropbear_${kt}_host_key"
return_code=0 return_code=0
fi fi
done
return $return_code return $return_code
} }
generate_keys() { generate_keys() {
for keytype in rsa ecdsa; do for kt in $KEY_TYPES; do
keyfile="/etc/dropbear/dropbear_${keytype}_host_key" kf="/etc/dropbear/dropbear_${kt}_host_key"
if [ ! -s "$keyfile" ]; then if [ ! -s "$kf" ]; then
echo "Generating ${keytype} host key for dropbear ..." echo "Generating ${kt} host key for dropbear ..."
dropbearkey -t "${keytype}" -f "${keyfile}" dropbearkey -t "${kt}" -f "${kf}"
fi fi
done done
} }