blob: 3f9f01831e296efb6d8023662df63ade71f8c8db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#!/bin/sh
if [ -z "$1" -o -z "$2" ]; then
echo "usage: mail-signed-keys keyring signedby" >&2
exit 1
fi
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"
signedby=`gpg $ro --fast-list-mode --list-keys --with-colons $2 \
2>/dev/null | awk -F: '$1=="pub" {print $5; exit 0}'`
if [ -z "$signedby" ]; then
echo "mail-signed-keys: '$2': no such signator" >&2
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
gpg $ro --check-sigs --with-colons 2>/dev/null \
| awk -F: -v signedby="$signedby" -v gpgopt="$ro" '
BEGIN { sendmail="/usr/lib/sendmail -oi -t " }
$1 == "pub" { nextkid=$5; nextuid=$10
if( uidcount > 0 ) { myflush() }
kid=nextkid; uid=nextuid; next
}
$1 == "uid" { uid=$10 ; next }
$1 == "sig" && $2 == "!" && $5 == signedby { uids[uidcount++] = uid; next }
END { if( uidcount > 0 ) { myflush() } }
function myflush()
{
if ( kid == signedby ) { uidcount=0; return }
print "sending key " substr(kid,9) " to" | "cat >&2"
for(i=0; i < uidcount; i++ ) {
print " " uids[i] | "cat >&2"
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
}
print "" | sendmail
close(cmd)
close( sendmail )
uidcount=0
}
'
|