85 lines
2.1 KiB
Bash
85 lines
2.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
LANG=C; export LANG
|
|
unset LC_ALL
|
|
unset LC_MESSAGES
|
|
|
|
me="$1"
|
|
if [ -z "${me}" ]; then
|
|
me=$(id -nu)
|
|
else
|
|
shift
|
|
fi
|
|
|
|
id="$@"
|
|
if [ -z "${id}" ]; then
|
|
id="${me}@freebsd.org"
|
|
fi
|
|
|
|
gpg=$(which gpg)
|
|
if [ ! -x "${gpg}" ]; then
|
|
echo "GnuPG does not seem to be installed" >/dev/stderr
|
|
exit 1
|
|
fi
|
|
|
|
echo "Retrieving key..."
|
|
keylist=$(gpg --list-keys ${id})
|
|
echo "${keylist}" | grep '^pub'
|
|
id=$(echo "${keylist}" | awk '/^pub/ { print $2 }' | sed 's%.*/%%' | sort -u)
|
|
id=$(echo $id)
|
|
if [ "${#id}" -lt 8 ]; then
|
|
echo "Invalid key ID." >/dev/stderr
|
|
exit 1
|
|
elif [ "${#id}" -gt 8 ]; then
|
|
echo "WARNING: Multiple keys; exporting all. If this is not what you want," >/dev/stderr
|
|
echo "WARNING: you should specify a key ID on the command line." >/dev/stderr
|
|
fi
|
|
fp=$(gpg --fingerprint ${id})
|
|
[ $? -eq 0 ] || exit 1
|
|
key=$(gpg --no-version --armor --export ${id})
|
|
[ $? -eq 0 ] || exit 1
|
|
|
|
keyfile="${me}.key"
|
|
if [ -f "${keyfile}" ]; then
|
|
rcsid=$(grep '^<!-- \$Free.*-->$' "${keyfile}")
|
|
fi
|
|
if [ -z "${rcsid}" ]; then
|
|
rcsid='<!-- $''FreeBSD''$ -->'
|
|
fi
|
|
echo "Generating ${keyfile}..."
|
|
(
|
|
echo "${rcsid}"
|
|
echo '<!--'
|
|
echo "sh $0 ${me} ${id};"
|
|
echo '-->'
|
|
echo '<programlisting role="pgpfingerprint"><![CDATA['
|
|
echo "${fp}"
|
|
echo ']]></programlisting>'
|
|
echo '<programlisting role="pgpkey"><![CDATA['
|
|
echo "${key}"
|
|
echo ']]></programlisting>'
|
|
) >"${keyfile}"
|
|
|
|
echo "Adding key to entity list..."
|
|
mv pgpkeys.ent pgpkeys.ent.orig || exit 1
|
|
(
|
|
cat pgpkeys.ent.orig
|
|
printf '<!ENTITY pgpkey.%.*s SYSTEM "%s">' 16 "${me}" "${keyfile}"
|
|
) | sort -u >pgpkeys.ent
|
|
|
|
echo
|
|
echo "Unless you are already listed there, you should now add the"
|
|
echo "following text to chapter.sgml in the appropriate position in"
|
|
echo "the developer section (unless this is a role key or you are a"
|
|
echo "core member.) Remember to keep the list sorted by last name!"
|
|
echo
|
|
echo " <sect2 id=\"pgpkey-${me}\">"
|
|
echo " <title>&a.${me};</title>"
|
|
echo " &pgpkey.${me};"
|
|
echo " </sect2>"
|
|
echo
|
|
echo "If this is a new entry, don't forget to 'cvs add ${keyfile}',"
|
|
echo "and to commit both ${keyfile} and pgpkeys.ent."
|