48 lines
1.1 KiB
Bash
48 lines
1.1 KiB
Bash
#!/bin/bash
|
|
# print fingerprints of new or changed certificates
|
|
set -e
|
|
cleanup()
|
|
{
|
|
rm -rf new{,.files} old{,.files}
|
|
}
|
|
showcert()
|
|
{
|
|
openssl x509 -in "$1" -noout -subject -fingerprint -nameopt multiline,utf8,-esc_msb \
|
|
| sed -ne 's/ *commonName *= / CN=/p; s/.*Fingerprint=/ sha1=/p'
|
|
sed -ne '/^# \(openssl\|distrust\|alias\)/s/^#/ /p' < "$1"
|
|
}
|
|
cleanup
|
|
trap cleanup EXIT
|
|
mkdir old new
|
|
cd old
|
|
echo old...
|
|
ln -s ../.osc/certdata.txt
|
|
python3 ../certdata2pem.py > stdout 2> stderr
|
|
ls -1 cert-* | sort > ../old.files
|
|
cd ..
|
|
cd new
|
|
echo new...
|
|
ln -s ../certdata.txt
|
|
python3 ../certdata2pem.py > stdout 2> stderr
|
|
ls -1 cert-* | sort > ../new.files
|
|
cd ..
|
|
echo '----------------------------'
|
|
while read line; do
|
|
IFS='#' eval set -- \$line
|
|
old="$1"
|
|
new="$2"
|
|
common="$3"
|
|
if [ -n "$old" ]; then
|
|
echo "- $old"
|
|
showcert old/$old
|
|
elif [ -n "$new" ]; then
|
|
echo "+ $new"
|
|
showcert new/$new
|
|
elif ! cmp "old/$common" "new/$common"; then
|
|
echo "~ $common"
|
|
showcert old/$common
|
|
showcert new/$common
|
|
diff -u old/$common new/$common || true
|
|
fi
|
|
done < <(comm --output-delimiter='#' old.files new.files)
|