diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2016-07-12 15:59:01 +0200 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2016-07-12 15:59:01 +0200 |
commit | 47d951836afe2bd668b68e1754091a2fca69b89b (patch) | |
tree | c6efeb4c33f11df9627bde6306b3e4b5724452f1 /certs/gencerts.sh | |
parent | 00f942860717cf492c6bd8c8fc32652991683b20 (diff) |
gencerts: make the SSHFPR output match the X509 ones.
Diffstat (limited to 'certs/gencerts.sh')
-rwxr-xr-x | certs/gencerts.sh | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/certs/gencerts.sh b/certs/gencerts.sh index 080257f..590fcfa 100755 --- a/certs/gencerts.sh +++ b/certs/gencerts.sh @@ -35,49 +35,51 @@ x509fpr() { for pub in $backup; do x509fpr2 "$h" "$pub" done fi } x509fpr2() { local h="$1" pub="$2" str dgst [ "$typ" = mdwn ] && str= || str=' ' str="$str$(printf '%-6s' "$h" | tr '[a-z]' '[A-Z]')" dgst="$(openssl pkey -pubin -outform DER <"$pub" | openssl dgst -"$h" -binary | base64)" hd=$(printf '%s' "$dgst" | base64 -d | xxd -c256 -p | tr '[a-f]' '[A-F]' | sed -e 's/../&:/g' -e 's/:$//') if [ $((${#indent} + ${#str} + 1 + ${#hd})) -le 72 ]; then printf '%s %s\n' "$indent$str" "$hd" else printf '%s %s\n' "$indent$str" "$dgst" fi } sshfpr() { - local msg="$1" host t h fpr + local msg="$1" host h fpr str host="${msg%%,*}"; host="${host%% *}"; host="${host#*@}"; host="${host#\`}"; host="${host%\`}" [ "$typ" = mdwn ] && { echo; echo " $msg"; echo; } || { echo " $msg" | tr -d '`'; } [ "${host#*:}" != 22 ] || host="${host%%:*}" + [ "$typ" = mdwn ] && str= || str=' ' for h in MD5 SHA256; do ssh-keygen -E "$h" -f "$DIR/../ssh_known_hosts" -lF "${host#*@}" - done | sed -nr 's/^[^ #]+\s+//p' | sed -r 's/^(\S+)\s+(MD5|SHA256):/\1 \2 /' | - while read t h fpr; do - printf '%s %6s:%s\n' "$indent$t" "$h" "$fpr" + done | sed -nr 's/^[^ #]+\s+//p' | sed -r 's/^\S+\s+([^:]+):/\1 /' | + while read h fpr; do + str2="$str$(printf '%-6s' "$h" | tr '[a-z]' '[A-Z]')" + printf '%s %s\n' "$indent$str2" "$fpr" done } allfpr() { local typ="$1" [ "$typ" = mdwn ] && indent=' ' || indent=' ' cat <<- EOF * IMAP server $(x509fpr '`imap.fripost.org:993` (IMAP over SSL), `sieve.fripost.org:4190` (ManageSieve, `STARTTLS`)') * SMTP servers $(x509fpr '`smtp.fripost.org:587` (Mail Submission Agent, `STARTTLS`)') $(x509fpr '`mx1.fripost.org:25` (1st Mail eXchange, `STARTTLS`)') $(x509fpr '`mx2.fripost.org:25` (2nd Mail eXchange, `STARTTLS`)') * Web servers $(x509fpr '`fripost.org:443`, `www.fripost.org:443` (website), `wiki.fripost.org:443` (wiki)') |