From 5f997269882aeffeda9d38c8890e3239370317ca Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Thu, 9 May 2024 11:32:47 +0300 Subject: [PATCH] Add support for ed25519 host keys --- PKGBUILD | 2 +- dropbear_install | 49 ++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 955580f..70c5d1a 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -20,7 +20,7 @@ source=( ) changelog=ChangeLog sha256sums=('6c529408125bd0c446162f8d4a16d7262d6b39896d8e6f87d364f7b299203315' - '51f44735be81a4488acd9b2b7713a3e61beddd9b167773db0e345adc3b8d693f' + '6e6fcb6a1f3b1ffae85a8b72b56b8fd2b221777713d221641d8cbfd2ad5637b3' 'ac69d63ecc672c698582b0fc260dbfe42d71adcdab707f807c8e1113be11abd8') package() { diff --git a/dropbear_install b/dropbear_install index 620f479..bf370d8 100644 --- a/dropbear_install +++ b/dropbear_install @@ -1,45 +1,46 @@ #!/bin/sh +set -e + +KEY_TYPES="ed25519 ecdsa rsa" + get_fingerprint() { - keyfile="$1" - dropbearkey -y -f "${keyfile}" | sed -n '/^Fingerprint:/ {s/Fingerprint: *//; p}' + kf="$1" + dropbearkey -y -f "${kf}" | sed -n '/^Fingerprint:/ {s/Fingerprint: *//; p}' } display_fingerprints() { - for keyfile in "/etc/dropbear/dropbear_rsa_host_key" "/etc/dropbear/dropbear_ecdsa_host_key"; do - if [ -s "${keyfile}" ]; then - echo "$(basename "${keyfile}") : $(get_fingerprint "${keyfile}")" + for kt in $KEY_TYPES; do + kf="/etc/dropbear/dropbear_${kt}_host_key" + if [ -s "${kf}" ]; then + echo "$(basename "${kf}") : $(get_fingerprint "${kf}")" fi done } copy_openssh_keys() { - osshrsa="/etc/ssh/ssh_host_rsa_key" - osshecdsa="/etc/ssh/ssh_host_ecdsa_key" - - dbpre="/etc/dropbear/dropbear_" - return_code=1 - if [ -s "$osshrsa" ]; then - dropbearconvert openssh dropbear $osshrsa ${dbpre}rsa_host_key - return_code=0 - fi - - if [ -s "$osshecdsa" ]; then - dropbearconvert openssh dropbear $osshecdsa ${dbpre}ecdsa_host_key - return_code=0 - fi + for kt in $KEY_TYPES; do + osshkey="/etc/ssh/ssh_host_$kt" + if [ -s "$osshkey" ]; then + dropbearconvert \ + openssh dropbear \ + "$osshkey" \ + "/etc/dropbear/dropbear_${kt}_host_key" + return_code=0 + fi + done return $return_code } generate_keys() { - for keytype in rsa ecdsa; do - keyfile="/etc/dropbear/dropbear_${keytype}_host_key" - if [ ! -s "$keyfile" ]; then - echo "Generating ${keytype} host key for dropbear ..." - dropbearkey -t "${keytype}" -f "${keyfile}" + for kt in $KEY_TYPES; do + kf="/etc/dropbear/dropbear_${kt}_host_key" + if [ ! -s "$kf" ]; then + echo "Generating ${kt} host key for dropbear ..." + dropbearkey -t "${kt}" -f "${kf}" fi done }