openssh/regress/keygen-comment.sh
dtucker@openbsd.org 01d4cdcd45 upstream: Backslash '$' at then end of string. Prevents warning on
some shells.

OpenBSD-Regress-ID: 5dc27ab624c09d34078fd326b10e38c1ce9c741f
2020-04-22 11:35:49 +10:00

53 lines
1.4 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#    Placed in the Public Domain.
tid="Comment extraction from private key"
S1="secret1"
check_fingerprint () {
file="$1"
comment="$2"
trace "fingerprinting $file"
if ! ${SSHKEYGEN} -l -E sha256 -f $file > $OBJ/$t-fgp ; then
fail "ssh-keygen -l failed for $t-key"
fi
if ! egrep "^([0-9]+) SHA256:(.){43} ${comment} \(.*\)\$" \
$OBJ/$t-fgp >/dev/null 2>&1 ; then
fail "comment is not correctly recovered for $t-key"
fi
rm -f $OBJ/$t-fgp
}
for fmt in '' RFC4716 PKCS8 PEM; do
for t in $SSH_KEYTYPES; do
trace "generating $t key in '$fmt' format"
rm -f $OBJ/$t-key*
oldfmt=""
case "$fmt" in
PKCS8|PEM) oldfmt=1 ;;
esac
# Some key types like ssh-ed25519 and *@openssh.com are never
# stored in old formats.
case "$t" in
ssh-ed25519|*openssh.com) test -z "$oldfmt" || continue ;;
esac
comment="foo bar"
fmtarg=""
test -z "$fmt" || fmtarg="-m $fmt"
${SSHKEYGEN} $fmtarg -N '' -C "${comment}" \
-t $t -f $OBJ/$t-key >/dev/null 2>&1 || \
fatal "keygen of $t in format $fmt failed"
check_fingerprint $OBJ/$t-key "${comment}"
check_fingerprint $OBJ/$t-key.pub "${comment}"
# Output fingerprint using only private file
trace "fingerprinting $t key using private key file"
rm -f $OBJ/$t-key.pub
if [ ! -z "$oldfmt" ] ; then
# Comment cannot be recovered from old format keys.
comment="no comment"
fi
check_fingerprint $OBJ/$t-key "${comment}"
rm -f $OBJ/$t-key*
done
done