99254d5
#!/bin/bash
99254d5
99254d5
# Create the host keys for the gsissh server.
5fd763c
KEYTYPE=$1
5fd763c
case $KEYTYPE in
5fd763c
	"dsa") ;& # disabled in FIPS
5fd763c
	"ed25519")
5fd763c
		FIPS=/proc/sys/crypto/fips_enabled
5fd763c
		if [[ -r "$FIPS" && $(cat $FIPS) == "1" ]]; then
5fd763c
			exit 0
5fd763c
		fi ;;
5fd763c
	"rsa") ;; # always ok
5fd763c
	"ecdsa") ;;
5fd763c
	*) # wrong argument
5fd763c
		exit 12 ;;
5fd763c
esac
5fd763c
KEY=/etc/gsissh/ssh_host_${KEYTYPE}_key
99254d5
99254d5
KEYGEN=/usr/bin/gsissh-keygen
5fd763c
if [[ ! -x $KEYGEN ]]; then
5fd763c
	exit 13
5fd763c
fi
915819d
5fd763c
# remove old keys
5fd763c
rm -f $KEY{,.pub}
0ae19bf
5fd763c
# create new keys
5fd763c
if ! $KEYGEN -q -t $KEYTYPE -f $KEY -C '' -N '' >&/dev/null; then
5fd763c
	exit 1
99254d5
fi
0ae19bf
5fd763c
# sanitize permissions
5fd763c
/usr/bin/chgrp ssh_keys $KEY
5fd763c
/usr/bin/chmod 640 $KEY
5fd763c
/usr/bin/chmod 644 $KEY.pub
5fd763c
if [[ -x /usr/sbin/restorecon ]]; then
5fd763c
	/usr/sbin/restorecon $KEY{,.pub}
5fd763c
fi
0ae19bf
5fd763c
exit 0