projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
send fix signed of length variable
[mmh]
/
uip
/
mhsign.sh
diff --git
a/uip/mhsign.sh
b/uip/mhsign.sh
index
9a06053
..
44b3870
100755
(executable)
--- a/
uip/mhsign.sh
+++ b/
uip/mhsign.sh
@@
-9,7
+9,7
@@
# will be removed and any "From " line will be indented for
# best compatibility. Enforced for multipart messages.
# will be removed and any "From " line will be indented for
# best compatibility. Enforced for multipart messages.
-usage="Usage: mhsign [-encrypt] [-mime] file"
+usage="Usage: mhsign [-encrypt] [-mime] [-Version] [-help] file"
# defaults
usemime=n
# defaults
usemime=n
@@
-22,8
+22,14
@@
if [ -z "$userid" ] ; then
userid="`mhparam pgpkey`"
fi
if [ -z "$userid" ] ; then
userid="`mhparam pgpkey`"
fi
if [ -z "$userid" ] ; then
- userid="`gpg --list-secret-keys --with-colons 2>/dev/null |
- sed -n '/^sec/{p;q;}' | cut -d: -f5`"
+ userid="`gpg --list-secret-keys --with-colons --fixed-list-mode \
+ 2>/dev/null |
+ grep '^sec' | sort -t: -k3,3nr -k 6,6nr |
+ awk -F: '
+ $7=="" || $7 > "'"\`date +%s\`"'" {
+ print $5; exit;
+ }
+ '`"
fi
if [ -z "$userid" ] ; then
echo "No secret key found" >&2
fi
if [ -z "$userid" ] ; then
echo "No secret key found" >&2
@@
-91,10
+97,16
@@
lookupkeyring() {
if [ $? != 0 ] ; then
return 1
fi
if [ $? != 0 ] ; then
return 1
fi
- echo "$key" | sed -n '/^pub/{p;q;}' | cut -d: -f5
+ echo "$key" | sed -n '/^pub:[^idre]:/{p;q;}' | cut -d: -f5
return 0
}
return 0
}
+### Do a best guess at FQDN
+mh_hostname()
+{
+ hostname -f 2>/dev/null || uname -n
+}
+
### lookupkeys file -- set $KL to list of recipient keys
lookupkeys() {
KL=
### lookupkeys file -- set $KL to list of recipient keys
lookupkeys() {
KL=
@@
-103,13
+115,18
@@
lookupkeys() {
echo "Encryption is not supported for BCCs" >&2
return 1
fi
echo "Encryption is not supported for BCCs" >&2
return 1
fi
-
- for i in `whom -ali -tocc -nobcc "$1"` ; do
+
+ # extract the actual address
+ format='%<{error}%{error}: %{text}%|%(addr{text})%>'
+ addresses=`whom -ali -tocc -nobcc "$1" |sed 's_$_,_'`
+ addresses=`%libdir%/ap -form "=$format" "$addresses"`
+
+ for i in $addresses ; do
case "$i" in
'|'*) echo "Ignoring pipe address" >&2
continue ;;
*@*) ;;
case "$i" in
'|'*) echo "Ignoring pipe address" >&2
continue ;;
*@*) ;;
- *) i="$i@`hostname -f`" ;;
+ *) i="$i@`mh_hostname`" ;;
esac
if k=`lookupkeyfile "$i"` ; then
KL="$KL $k"
esac
if k=`lookupkeyfile "$i"` ; then
KL="$KL $k"
@@
-165,7
+182,7
@@
fixheaders() {
### newboundary -- output a suitable boundary marker
newboundary() {
### newboundary -- output a suitable boundary marker
newboundary() {
- b=$$_`date|sed 's/[ : ]/_/g'`
+ b=$$_`LC_ALL=C date|sed 's/[ : ]/_/g'`
for i in 0 x '=' _ + , Z 9 4 ; do
if grep "^--$b" $TEMP/body >/dev/null 2>&1 ; then
## oops, bad boundary -- try again
for i in 0 x '=' _ + , Z 9 4 ; do
if grep "^--$b" $TEMP/body >/dev/null 2>&1 ; then
## oops, bad boundary -- try again