Files
OpenSSH-Moduli-Generator/root/usr/sbin/sshd-moduli
Cantibra 0b84239097
All checks were successful
OpenSSH Moduli Generator (Bookworm) / OpenSSH Moduli Generator [arm64] (push) Successful in 11s
OpenSSH Moduli Generator (Bookworm) / OpenSSH Moduli Generator [amd64] (push) Successful in 10s
OpenSSH Moduli Generator (Noble) / OpenSSH Moduli Generator [arm64] (push) Successful in 10s
OpenSSH Moduli Generator (Noble) / OpenSSH Moduli Generator [amd64] (push) Successful in 10s
OpenSSH Moduli Generator (Trixie) / OpenSSH Moduli Generator [arm64] (push) Successful in 11s
OpenSSH Moduli Generator (Trixie) / OpenSSH Moduli Generator [amd64] (push) Successful in 11s
Initialize Git Repository: 'OpenSSH-Moduli-Generator'
2026-01-26 06:10:20 +01:00

96 lines
2.3 KiB
Bash

#!/usr/bin/env bash
###
#
# Options Section
#
###
set -e
set -u
set -o pipefail
###
#
# Variables Section
#
###
ARGUMENT="${1:-2048 3072 4096 6144 7680 8192}"
TMP='/var/tmp/openssh-moduli'
###
#
# Function Section
#
###
function generate () {
local BITSIZE
BITSIZE="${1}"
/usr/bin/test -f "${TMP}/.moduli-${BITSIZE}.candidates.step" && \
return
/usr/bin/test -f "${TMP}/.moduli-${BITSIZE}.candidates.lock" && \
/usr/bin/rm --force "${TMP}/moduli-${BITSIZE}.candidates" && \
/usr/bin/rm --force "${TMP}/.moduli-${BITSIZE}.candidates.lock"
/usr/bin/test ! -f "${TMP}/moduli-${BITSIZE}.candidates" && \
/usr/bin/touch "${TMP}/.moduli-${BITSIZE}.candidates.lock"
/usr/bin/ssh-keygen -M 'generate' -O "bits=${BITSIZE}" "${TMP}/moduli-${BITSIZE}.candidates"
/usr/bin/touch "${TMP}/.moduli-${BITSIZE}.candidates.step"
/usr/bin/rm --force "${TMP}/.moduli-${BITSIZE}.candidates.lock"
}
function screen () {
local BITSIZE
BITSIZE="${1}"
/usr/bin/test -f "${TMP}/.moduli-${BITSIZE}.step" && \
return
/usr/bin/test -f "${TMP}/.moduli-${BITSIZE}.lock" && \
/usr/bin/rm --force "${TMP}/moduli-${BITSIZE}" && \
/usr/bin/rm --force "${TMP}/.moduli-${BITSIZE}.lock"
/usr/bin/test ! -f "${TMP}/moduli-${BITSIZE}" && \
/usr/bin/touch "${TMP}/.moduli-${BITSIZE}.lock"
/usr/bin/ssh-keygen -M 'screen' -f "${TMP}/moduli-${BITSIZE}.candidates" "${TMP}/moduli-${BITSIZE}"
/usr/bin/touch "${TMP}/.moduli-${BITSIZE}.step"
/usr/bin/rm --force "${TMP}/.moduli-${BITSIZE}.lock"
}
function merge () {
local BITSIZE
local MBITSIZE
BITSIZE="${1}"
MBITSIZE=$(("${BITSIZE}" - 1))
/usr/bin/test -f "${TMP}/moduli" && \
/usr/bin/grep --extended-regexp "[0-9]{1,14} [0-9] [0-9] [0-9]{1,3} ${MBITSIZE} [0-9]" --quiet "${TMP}/moduli" || \
/usr/bin/cat "${TMP}/moduli-${BITSIZE}" >> "${TMP}/moduli"
}
###
#
# Runtime Environment
#
###
if [[ "${EUID}" -ne '0' ]]; then
/usr/bin/echo 'Error: Permission Denied'
exit 1
fi
if [[ ! -d "${TMP}" ]]; then
/usr/bin/install --directory "${TMP}"
fi
for BITSIZE in ${ARGUMENT}; do
generate "${BITSIZE}"
screen "${BITSIZE}"
merge "${BITSIZE}"
done
/usr/bin/install --directory '/etc/ssh'
/usr/bin/mv --force "${TMP}/moduli" '/etc/ssh/moduli'
/usr/bin/rm --force --recursive "${TMP}"
if /usr/bin/systemctl --quiet is-active 'sshd'; then
/usr/bin/systemctl --quiet restart 'ssh'
fi