mirror of
git://git.gnupg.org/gnupg.git
synced 2024-11-10 21:38:50 +01:00
f90cfe6b66
* g10/gpg.c: Add option --allow-weak-digest-algos. (main): Set option also in PGP2 mode. * g10/options.h (struct opt): Add flags.allow_weak_digest_algos. * g10/sig-check.c (do_check): Reject MD5 signatures. * tests/openpgp/defs.inc: Add allow_weak_digest_algos to gpg.conf.
267 lines
5.9 KiB
Bash
Executable File
267 lines
5.9 KiB
Bash
Executable File
# Definitions for the OpenPGP test scripts -*- sh -*-
|
|
# Copyright 1998,1999,2000,2001,2002,2003,2004,2005,2006,
|
|
# 2007, 2010 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 file 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.
|
|
|
|
#--------------------------------
|
|
#------ constants ---------------
|
|
#--------------------------------
|
|
|
|
usrname1="one@example.com"
|
|
usrpass1="def"
|
|
usrname2="two@example.com"
|
|
usrpass2=""
|
|
usrname3="three@example.com"
|
|
usrpass3=""
|
|
|
|
|
|
dsa_usrname1="pgp5"
|
|
# we use the sub key because we do not yet have the logic to to derive
|
|
# the first encryption key from a keyblock (I guess) (Well of course
|
|
# we have this by now and the notation below will lookup the primary
|
|
# first and the search for the encryption subkey.)
|
|
dsa_usrname2="0xCB879DE9"
|
|
|
|
|
|
plain_files="plain-1 plain-2 plain-3"
|
|
data_files="data-500 data-9000 data-32000 data-80000"
|
|
exp_files=""
|
|
|
|
# The testscripts expect the original language
|
|
LANG=
|
|
LANGUAGE=
|
|
LC_ALL=
|
|
LC_MESSAGES=
|
|
|
|
# Internal use.
|
|
defs_stop_on_error=no
|
|
defs_error_seen=no
|
|
defs_progress_active=no
|
|
|
|
#--------------------------------
|
|
#------ utility functions -------
|
|
#--------------------------------
|
|
|
|
progress_cancel () {
|
|
if [ x$defs_progress_active = xyes ]; then
|
|
echo
|
|
defs_progress_active=no
|
|
fi
|
|
}
|
|
|
|
fatal () {
|
|
progress_cancel
|
|
echo "$pgmname: fatal:" $* >&2
|
|
echo "$pgmname: fatal:" $* >&5
|
|
echo stop >gnupg-test.stop
|
|
exit 1;
|
|
}
|
|
|
|
error () {
|
|
progress_cancel
|
|
echo "$pgmname:" $* >&2
|
|
defs_error_seen=yes
|
|
echo "$pgmname:" $* >&5
|
|
if [ x$defs_stop_on_error != xyes ]; then
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Call this at the start of a test and resume_error at the end to keep
|
|
# on running all subtests without immediately exiting on error.
|
|
suspend_error () {
|
|
defs_stop_on_error=yes
|
|
}
|
|
|
|
resume_error () {
|
|
if [ x$defs_error_seen = xyes ]; then
|
|
exit 1
|
|
fi
|
|
defs_stop_on_error=no
|
|
defs_error_seen=no
|
|
}
|
|
|
|
info () {
|
|
progress_cancel
|
|
echo "$pgmname:" $* >&2
|
|
if [ -n "${verbose+set}" ]; then
|
|
echo "$pgmname:" $* >&5
|
|
fi
|
|
}
|
|
|
|
linefeed () {
|
|
echo >&2
|
|
}
|
|
|
|
echo_n_init=no
|
|
echo_n () {
|
|
if test "$echo_n_init" = "no"; then
|
|
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
|
|
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
|
|
echo_n_n=
|
|
echo_n_c='
|
|
'
|
|
else
|
|
echo_n_n='-n'
|
|
echo_n_c=
|
|
fi
|
|
else
|
|
echo_n_n=
|
|
echo_n_c='\c'
|
|
fi
|
|
echo_n_init=yes
|
|
fi
|
|
echo $echo_n_n "${1}$echo_n_c"
|
|
}
|
|
|
|
|
|
progress_end () {
|
|
if [ x$defs_progress_active = xyes ]; then
|
|
echo "<"
|
|
defs_progress_active=no
|
|
fi
|
|
}
|
|
|
|
progress () {
|
|
if [ x$defs_progress_active != xyes ]; then
|
|
echo_n " > "
|
|
defs_progress_active=yes
|
|
fi
|
|
echo_n "$* "
|
|
}
|
|
|
|
|
|
|
|
#cleanup () {
|
|
# rm $cleanup_files 2>/dev/null || true
|
|
# echo "#empty" >./gpg.conf
|
|
#}
|
|
|
|
|
|
#add_cleanup () {
|
|
# cleanup_files="$cleanup_files $*"
|
|
#}
|
|
|
|
have_pubkey_algo () {
|
|
if $GPG --version | grep "Pubkey:.*$1" >/dev/null
|
|
then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
have_cipher_algo () {
|
|
if $GPG --version | grep "Cipher:.*$1" >/dev/null
|
|
then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
have_hash_algo () {
|
|
if $GPG --version | grep "Hash:.*$1" >/dev/null
|
|
then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
all_cipher_algos () {
|
|
$GPG --with-colons --list-config ciphername \
|
|
| sed 's/^cfg:ciphername://; s/;/ /g'
|
|
}
|
|
|
|
all_hash_algos () {
|
|
$GPG --with-colons --list-config digestname \
|
|
| sed 's/^cfg:digestname://; s/;/ /g'
|
|
}
|
|
|
|
set -e
|
|
pgmname=`basename $0`
|
|
#trap cleanup SIGHUP SIGINT SIGQUIT
|
|
|
|
[ -z "$srcdir" ] && fatal "not called from make"
|
|
|
|
#
|
|
if [ -f gnupg-test.stop ]; then
|
|
if [ $pgmname = "version.test" ]; then
|
|
rm gnupg-test.stop
|
|
else
|
|
# Skip the rest of the tests.
|
|
exit 77
|
|
fi
|
|
fi
|
|
|
|
# Always work in the current directory. We set GNUPGHOME only if it
|
|
# has not been set already. Usually it is set through the Makefile's
|
|
# TESTS_ENVIRONMENT macro.
|
|
if [ -z "$GNUPGHOME" ]; then
|
|
GNUPGHOME=`/bin/pwd`
|
|
export GNUPGHOME
|
|
elif [ "$GNUPGHOME" != `/bin/pwd` ]; then
|
|
echo "$pgmname: GNUPGHOME not set to the cwd" $* >&2
|
|
exit 1
|
|
fi
|
|
|
|
# We don't use GPG_AGENT_INFO anymore - better reset it.
|
|
unset GPG_AGENT_INFO
|
|
|
|
# (--no-permission-warning makes only sense on the commandline)
|
|
GPG="../../g10/gpg2 --no-permission-warning "
|
|
# (We may not use a relative name for gpg-agent.)
|
|
GPG_AGENT="$(cd ../../agent && /bin/pwd)/gpg-agent"
|
|
GPG_CONNECT_AGENT="../../tools/gpg-connect-agent"
|
|
GPGCONF="../../tools/gpgconf"
|
|
GPG_PRESET_PASSPHRASE="../../agent/gpg-preset-passphrase"
|
|
MKTDATA="../../tools/mk-tdata"
|
|
PINENTRY="$(cd $srcdir && /bin/pwd)/pinentry.sh"
|
|
# Default to empty passphrase for pinentry.sh
|
|
PINENTRY_USER_DATA=
|
|
|
|
# If --check-trustdb is not an option, GPG has been build without
|
|
# trust model support. Thus we can't use --always-trust and some
|
|
# other options.
|
|
if $GPG --dump-options | grep '^--check-trustdb$' >/dev/null ; then
|
|
opt_always="--always-trust"
|
|
else
|
|
opt_always=
|
|
fi
|
|
|
|
# Make sure we have a valid option files even with VPATH builds.
|
|
for f in gpg.conf gpg-agent.conf ; do
|
|
if [ -f ./$f ]; then
|
|
:
|
|
elif [ -f $srcdir/$f.tmpl ]; then
|
|
cat $srcdir/$f.tmpl >$f
|
|
case "$f" in
|
|
gpg.conf)
|
|
[ -n "${opt_always}" ] && echo "no-auto-check-trustdb" >>"$f"
|
|
echo "agent-program $GPG_AGENT" >>"$f"
|
|
echo "allow-weak-digest-algos" >>"$f"
|
|
|
|
;;
|
|
gpg-agent.conf)
|
|
echo "pinentry-program $PINENTRY" >>"$f"
|
|
;;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
if [ "${verbose:-0}" -gt "1" ]; then
|
|
exec 5>/dev/null
|
|
else
|
|
echo "Test: $pgmname" > ${pgmname}.log
|
|
echo "GNUPGHOME=$GNUPGHOME" >> ${pgmname}.log
|
|
exec 5>&2 2>>${pgmname}.log
|
|
fi
|
|
:
|
|
# end
|