blob: 25f3586d78270e9eacecb90feb207abb7573f4e0 (
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
#!/bin/sh
########################################################
## ez-pine-gpg-helper-sender ##
## part of ez-pine-gpg v0.4h // gpg filters for pine ##
## http://Business-PHP.com/opensource/ez-pine-gpg/ ##
## (c) 13 Feb 2004, Atom Emet ##
## (c) 16 Dec 2004, Atom Emet ##
## Atom {at} Business-PHP.com ##
## Distributed under the GNU General Public License ##
## http://www.gnu.org/copyleft/gpl.html ##
## ##
## ################################################ ##
## ##
## This program is free software; you can ##
## redistribute it and/or modify it under the terms ##
## of the GNU General Public License as published by ##
## the Free Software Foundation; either version 2 of ##
## the License, or (at your option) any later ##
## version. ##
## ##
## This program is distributed in the hope that it ##
## will be useful, but WITHOUT ANY WARRANTY; without ##
## even the implied warranty of MERCHANTABILITY or ##
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU ##
## General Public License for more details. ##
## ##
## You should have received a copy of the GNU ##
## General Public License along with this program; ##
## if not, write to the ##
## Free Software Foundation, Inc., ##
## 59 Temple Place - Suite 330, ##
## Boston, MA 02111-1307, USA. ##
########################################################
#########################################
## PATH is configured during installation
PATH=/bin:/usr/bin:/home/bnewbold/bin
##########################################################################
## make sure the role being used to send has a valid key in the keyring ##
##########################################################################
#####################################################
## the var "msg" is the full headers and message body
##
msg="`cat`"
######################################################################################
## if there is an "OpenPGP" find the "id" field <http://josefsson.org/openpgp-header/>
## use that key for signing:
## OpenPGP: id=0x12345678
##
if which 822fields >& - 2>& -
then
key_id=`echo "${msg}" | 822fields OpenPGP | sed 's!([^)]*)!!g' | tr ' ;' '\n' | egrep ^id | cut -d= -f2`
if [ "${key_id}" ]
then
echo "Signing with \"OpenPGP\" UID: ${key_id}" 1>&2
echo "${key_id}"
key_id= ; msg=
exit 0
fi
fi
###############################################################
## if there is a header "X-OpenPGP-KeyID" or "X-OpenPGP-Key-ID"
## use that key for signing:
## X-OpenPGP-KeyID: 0x12345678
##
key_id=`echo "${msg}" | tr -d '\r' | egrep -i '^X-OpenPGP-Key(-)?ID: ' | tr ' ' '\n' | egrep '0x' | head -n 1`
if [ "${key_id}" ]
then
echo "${key_id}"
key_id= ; msg=
exit 0
fi
###############################################
## the last token on the "From" line is used as
## gpg's "--local-user" option
## angle brackets (<>) are stripped off
##
from=`echo "${msg}" | egrep '^From: ' | head -n 1 | tr -d '[\n\r]' | sed 's/^.* // ; s/[<>]//g'`
#######################################
## make sure we've found a valid sender
##
if ! gpg --list-secret-keys ${from} 2>&- 1>&- && [ "`echo ${from} | egrep '.*-.*@'`" ]
then
echo '/////////////////////////////////////////////////////////////////////////' 1>&2
echo "// No secret key found for <${from}>" 1>&2
from=`echo ${from} | sed 's/-.*@/@/'`
echo "// Should I try signing with a key for <${from}>? [Y/n]: " | tr -d '\n' 1>&2
read answer 0< /dev/tty
if [ `echo "${answer}" | egrep -i n` ]
then
msg= ; from=
exit 2
fi
echo 1>&2
fi
#########################################################
## echo the sending address that we have a secret key for
## this returns the address to the calling process
echo "${from}"
########################################
## unset variables we don't need anymore
##
msg= ; from=
#############
## we're done
##
exit 0
|