diff --git a/en_US.ISO8859-1/books/handbook/pgpkeys/addkey.sh b/en_US.ISO8859-1/books/handbook/pgpkeys/addkey.sh
new file mode 100644
index 0000000000..d88d91fe5f
--- /dev/null
+++ b/en_US.ISO8859-1/books/handbook/pgpkeys/addkey.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+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 --armor --export ${id})
+[ $? -eq 0 ] || exit 1
+
+keyfile="${me}.key"
+echo "Generating ${keyfile}..."
+(
+ echo ''
+ echo ''
+ echo ''
+ echo ''
+) >"${keyfile}"
+
+echo "Adding key to entity list..."
+mv pgpkeys.ent pgpkeys.ent.orig || exit 1
+(
+ cat pgpkeys.ent.orig
+ printf '' 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 " "
+echo " &a.${me};"
+echo " &pgpkey.${me};"
+echo " "
+echo
+echo "Don't forget to 'cvs add ${keyfile}' if this is a new entry,"
+echo "and check your diffs before committing!"