summaryrefslogtreecommitdiffstats
path: root/tools/mail-signed-keys
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mail-signed-keys')
-rwxr-xr-xtools/mail-signed-keys105
1 files changed, 72 insertions, 33 deletions
diff --git a/tools/mail-signed-keys b/tools/mail-signed-keys
index 3f9f01831..80fbb3481 100755
--- a/tools/mail-signed-keys
+++ b/tools/mail-signed-keys
@@ -1,19 +1,38 @@
#!/bin/sh
+# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-if [ -z "$1" -o -z "$2" ]; then
- echo "usage: mail-signed-keys keyring signedby" >&2
+# FIXME: Add --dry-run, use only valid email addreses, extract only given keys
+
+dryrun=0
+if [ "$1" = "--dry-run" ]; then
+ dryrun=1
+ shift
+fi
+
+if [ -z "$1" -o -z "$2" -o -z "$3" ]; then
+ echo "usage: mail-signed-keys keyring signedby signame" >&2
exit 1
fi
+signame="$3"
+
if [ ! -f $1 ]; then
echo "mail-signed-keys: '$1': no such file" >&2
exit 1
fi
[ -f '.#tdb.tmp' ] && rm '.#tdb.tmp'
-ro="--trustdb-name=./.#tdb.tmp --dry-run --lock-never --no-default-keyring --keyring $1"
+ro="--homedir . --no-options --trustdb-name=./.#tdb.tmp --dry-run --lock-never --no-default-keyring --keyring $1"
-signedby=`gpg $ro --fast-list-mode --list-keys --with-colons $2 \
+signedby=`gpg $ro --list-keys --with-colons $2 \
2>/dev/null | awk -F: '$1=="pub" {print $5; exit 0}'`
if [ -z "$signedby" ]; then
@@ -21,14 +40,16 @@ if [ -z "$signedby" ]; then
exit 1
fi
-echo "About to send the the keys signed by $signedby" >&2
-echo -n "to their owners. Do you really want to do this? (y/N)" >&2
-read
-[ "$REPLY" != "y" -a "$REPLY" != "Y" ] && exit 0
-
+if [ "$dryrun" = "0" ]; then
+ echo "About to send the the keys signed by $signedby" >&2
+ echo -n "to their owners. Do you really want to do this? (y/N)" >&2
+ read
+ [ "$REPLY" != "y" -a "$REPLY" != "Y" ] && exit 0
+fi
gpg $ro --check-sigs --with-colons 2>/dev/null \
- | awk -F: -v signedby="$signedby" -v gpgopt="$ro" '
+ | awk -F: -v signedby="$signedby" -v gpgopt="$ro" \
+ -v dryrun="$dryrun" -v signame="$signame" '
BEGIN { sendmail="/usr/lib/sendmail -oi -t " }
$1 == "pub" { nextkid=$5; nextuid=$10
if( uidcount > 0 ) { myflush() }
@@ -42,34 +63,52 @@ function myflush()
{
if ( kid == signedby ) { uidcount=0; return }
print "sending key " substr(kid,9) " to" | "cat >&2"
- for(i=0; i < uidcount; i++ ) {
+ for(i=0; i < 1; i++ ) {
print " " uids[i] | "cat >&2"
- if( i == 0 ) {
- printf "To: %s", uids[i] | sendmail
- }
- else {
- printf ",\n %s", uids[i] | sendmail
- }
+ if( dryrun == 0 ) {
+ if( i == 0 ) {
+ printf "To: %s", uids[i] | sendmail
+ }
+ else {
+ printf ",\n %s", uids[i] | sendmail
+ }
+ }
}
- printf "\n" | sendmail
- print "Subject: I signed your key " substr(kid,9) | sendmail
- print "" | sendmail
- print "Hi," | sendmail
- print "" | sendmail
- print "Here you get back the signed key." | sendmail
- print "" | sendmail
- print "ciao," | sendmail
- print " your Key Signator" | sendmail
- print "" | sendmail
- cmd = "gpg " gpgopt " --export -a " kid " 2>/dev/null"
- while( (cmd | getline) > 0 ) {
- print | sendmail
+ if(dryrun == 0) {
+ printf "\n" | sendmail
+ print "Subject: I signed your key " substr(kid,9) | sendmail
+ print "" | sendmail
+ print "Hi," | sendmail
+ print "" | sendmail
+ print "Here you get back the signed key." | sendmail
+ print "Please send it yourself to a keyserver." | sendmail
+ print "" | sendmail
+ print "Peace," | sendmail
+ print " " signame | sendmail
+ print "" | sendmail
+ cmd = "gpg " gpgopt " --export -a " kid " 2>/dev/null"
+ while( (cmd | getline) > 0 ) {
+ print | sendmail
+ }
+ print "" | sendmail
+ close(cmd)
+ close( sendmail )
}
- print "" | sendmail
- close(cmd)
- close( sendmail )
uidcount=0
}
'
+
+
+
+
+
+
+
+
+
+
+
+
+