mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
g10: Add TOFU support.
* configure.ac: Check for sqlite3. (SQLITE3_CFLAGS): AC_SUBST it. (SQLITE3_LIBS): Likewise. * g10/Makefile.am (AM_CFLAGS): Add $(SQLITE3_CFLAGS). (gpg2_SOURCES): Add tofu.h and tofu.c. (gpg2_LDADD): Add $(SQLITE3_LIBS). * g10/tofu.c: New file. * g10/tofu.h: New file. * g10/options.h (trust_model): Define TM_TOFU and TM_TOFU_PGP. (tofu_db_format): Define. * g10/packet.h (PKT_signature): Add fields digest and digest_len. * g10/gpg.c: Include "tofu.h". (cmd_and_opt_values): Declare aTOFUPolicy, oTOFUDefaultPolicy, oTOFUDBFormat. (opts): Add them. (parse_trust_model): Recognize the tofu and tofu+pgp trust models. (parse_tofu_policy): New function. (parse_tofu_db_format): New function. (main): Initialize opt.tofu_default_policy and opt.tofu_db_format. Handle aTOFUPolicy, oTOFUDefaultPolicy and oTOFUDBFormat. * g10/mainproc.c (do_check_sig): If the signature is good, copy the hash to SIG->DIGEST and set SIG->DIGEST_LEN appropriately. * g10/trustdb.h (get_validity): Add arguments sig and may_ask. Update callers. (tdb_get_validity_core): Add arguments sig and may_ask. Update callers. * g10/trust.c (get_validity) Add arguments sig and may_ask. Pass them to tdb_get_validity_core. * g10/trustdb.c: Include "tofu.h". (trust_model_string): Handle TM_TOFU and TM_TOFU_PGP. (tdb_get_validity_core): Add arguments sig and may_ask. If OPT.TRUST_MODEL is TM_TOFU or TM_TOFU_PGP, compute the TOFU trust level. Combine it with the computed PGP trust level, if appropriate. * g10/keyedit.c: Include "tofu.h". (show_key_with_all_names_colon): If the trust mode is tofu or tofu+pgp, then show the trust policy. * g10/keylist.c: Include "tofu.h". (public_key_list): Also show the PGP stats if the trust model is TM_TOFU_PGP. (list_keyblock_colon): If the trust mode is tofu or tofu+pgp, then show the trust policy. * g10/pkclist.c: Include "tofu.h". * g10/gpgv.c (get_validity): Add arguments sig and may_ask. (enum tofu_policy): Define. (tofu_get_policy): New stub. (tofu_policy_str): Likewise. * g10/test-stubs.c (get_validity): Add arguments sig and may_ask. (enum tofu_policy): Define. (tofu_get_policy): New stub. (tofu_policy_str): Likewise. * doc/DETAILS: Describe the TOFU Policy field. * doc/gpg.texi: Document --tofu-set-policy, --trust-model=tofu, --trust-model=tofu+pgp, --tofu-default-policy and --tofu-db-format. * tests/openpgp/Makefile.am (TESTS): Add tofu.test. (TEST_FILES): Add tofu-keys.asc, tofu-keys-secret.asc, tofu-2183839A-1.txt, tofu-BC15C85A-1.txt and tofu-EE37CF96-1.txt. (CLEANFILES): Add tofu.db. (clean-local): Add tofu.d. * tests/openpgp/tofu.test: New file. * tests/openpgp/tofu-2183839A-1.txt: New file. * tests/openpgp/tofu-BC15C85A-1.txt: New file. * tests/openpgp/tofu-EE37CF96-1.txt: New file. * tests/openpgp/tofu-keys.asc: New file. * tests/openpgp/tofu-keys-secret.asc: New file. -- Signed-off-by: Neal H. Walfield <neal@g10code.com>.
This commit is contained in:
parent
93e855553e
commit
f77913e0ff
26 changed files with 3508 additions and 80 deletions
|
@ -38,7 +38,8 @@ TESTS = version.test mds.test \
|
|||
armdetachm.test detachm.test genkey1024.test \
|
||||
conventional.test conventional-mdc.test \
|
||||
multisig.test verify.test armor.test \
|
||||
import.test ecc.test 4gb-packet.test finish.test
|
||||
import.test ecc.test 4gb-packet.test tofu.test \
|
||||
finish.test
|
||||
|
||||
|
||||
TEST_FILES = pubring.asc secring.asc plain-1o.asc plain-2o.asc plain-3o.asc \
|
||||
|
@ -46,7 +47,9 @@ TEST_FILES = pubring.asc secring.asc plain-1o.asc plain-2o.asc plain-3o.asc \
|
|||
pubring.pkr.asc secring.skr.asc secdemo.asc pubdemo.asc \
|
||||
gpg.conf.tmpl gpg-agent.conf.tmpl \
|
||||
bug537-test.data.asc bug894-test.asc \
|
||||
bug1223-good.asc bug1223-bogus.asc 4gb-packet.asc
|
||||
bug1223-good.asc bug1223-bogus.asc 4gb-packet.asc \
|
||||
tofu-keys.asc tofu-keys-secret.asc \
|
||||
tofu-2183839A-1.txt tofu-BC15C85A-1.txt tofu-EE37CF96-1.txt
|
||||
|
||||
data_files = data-500 data-9000 data-32000 data-80000 plain-large
|
||||
|
||||
|
@ -95,10 +98,10 @@ CLEANFILES = prepared.stamp x y yy z out err $(data_files) \
|
|||
*.test.log gpg_dearmor gpg.conf gpg-agent.conf S.gpg-agent \
|
||||
pubring.gpg pubring.gpg~ pubring.kbx pubring.kbx~ \
|
||||
secring.gpg pubring.pkr secring.skr \
|
||||
gnupg-test.stop random_seed gpg-agent.log
|
||||
gnupg-test.stop random_seed gpg-agent.log tofu.db
|
||||
|
||||
clean-local:
|
||||
-rm -rf private-keys-v1.d openpgp-revocs.d
|
||||
-rm -rf private-keys-v1.d openpgp-revocs.d tofu.d
|
||||
|
||||
|
||||
# We need to depend on a couple of programs so that the tests don't
|
||||
|
|
BIN
tests/openpgp/tofu-2183839A-1.txt
Normal file
BIN
tests/openpgp/tofu-2183839A-1.txt
Normal file
Binary file not shown.
9
tests/openpgp/tofu-BC15C85A-1.txt
Normal file
9
tests/openpgp/tofu-BC15C85A-1.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
-----BEGIN PGP MESSAGE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
owGbwMvMwMF46tzNaXtET0QxnmZPYgj9/c+Sq2MOCwMjBwMbKxOIy8DFKQBTo/SK
|
||||
hWFThVuj19r3R/6VzQkpaZuQx7s3r9BQ46v8KXkjb58dSjmXyr7enlCzb7dg1zE7
|
||||
aynbc6YTF+wXZI4IlAgPuLJhUeSXo0+WllxbFXUz39407cv15TcXThLj+3tFkSnZ
|
||||
YFXwM9+nfAoHpt6I/ZY96SJT3XFZKzO1jeZNJhZsV4Vfrjp0UmnH3E4A
|
||||
=X9WM
|
||||
-----END PGP MESSAGE-----
|
9
tests/openpgp/tofu-EE37CF96-1.txt
Normal file
9
tests/openpgp/tofu-EE37CF96-1.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
-----BEGIN PGP MESSAGE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
owGbwMvMwMEY0Tqz9J35+WmMp9mTGEJ//xPk6pjDwsDIwcDGygTiMnBxCsDULFZm
|
||||
/sk4S36iQ6FuZZPMPdOSe/rZOxNThTmzvJN4l1qe9XGdlLhtpumfzh0uhRnzT2Xc
|
||||
jmra+ZdN9+XBhml//i7v6XrfuWu56OuEI/fXH0i3P5HELb+j++6SO85VemLq/tvO
|
||||
hNvWtddvuZ7+z2JJaqnP4wiu2t+sEze/MWKZ9zz+u2FV6a3OIyJxjwA=
|
||||
=JMtb
|
||||
-----END PGP MESSAGE-----
|
95
tests/openpgp/tofu-keys-secret.asc
Executable file
95
tests/openpgp/tofu-keys-secret.asc
Executable file
|
@ -0,0 +1,95 @@
|
|||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
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
|
||||
CQ==
|
||||
=2SlE
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
47
tests/openpgp/tofu-keys.asc
Executable file
47
tests/openpgp/tofu-keys.asc
Executable file
|
@ -0,0 +1,47 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
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
|
||||
0v2sv67Ar70GR4vQwMvfCUAbnsVrL05eBjUJ
|
||||
=Btw1
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
245
tests/openpgp/tofu.test
Executable file
245
tests/openpgp/tofu.test
Executable file
|
@ -0,0 +1,245 @@
|
|||
#!/bin/sh
|
||||
|
||||
. $srcdir/defs.inc || exit 3
|
||||
|
||||
# set -x
|
||||
|
||||
KEYS="2183839A BC15C85A EE37CF96"
|
||||
|
||||
# Make sure $srcdir is set.
|
||||
if test "x$srcdir" = x
|
||||
then
|
||||
echo srcdir environment variable not set!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure $GNUPGHOME is set.
|
||||
if test "x$GNUPGHOME" = x
|
||||
then
|
||||
echo "GNUPGHOME not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Import the test keys.
|
||||
$GPG --import $srcdir/tofu-keys.asc
|
||||
|
||||
# Make sure the keys are imported.
|
||||
for k in $KEYS
|
||||
do
|
||||
if ! $GPG --list-keys $k >/dev/null 2>&1
|
||||
then
|
||||
echo Missing key $k
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
format=auto
|
||||
|
||||
debug()
|
||||
{
|
||||
echo "$@" >&2
|
||||
}
|
||||
|
||||
debug_exec()
|
||||
{
|
||||
debug "Running GNUPGHOME=$GNUPGHOME $@"
|
||||
${@:+"$@"}
|
||||
}
|
||||
|
||||
# $1 is the keyid of the policy to lookup. Any remaining arguments
|
||||
# are simply passed to GPG.
|
||||
#
|
||||
# This function only supports keys with a single user id.
|
||||
getpolicy()
|
||||
{
|
||||
keyid=$1
|
||||
if test x$keyid = x
|
||||
then
|
||||
echo No keyid supplied!
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
|
||||
policy=$(debug_exec $GPG --tofu-db-format=$format --trust-model=tofu \
|
||||
--with-colons $@ --list-keys "$keyid" \
|
||||
| awk -F: '/^uid:/ { print $18 }')
|
||||
if test $(echo "$policy" | wc -l) -ne 1
|
||||
then
|
||||
echo "Got: $policy" >&2
|
||||
echo "error"
|
||||
else
|
||||
case $policy in
|
||||
auto|good|unknown|bad|ask) echo $policy ;;
|
||||
*) echo "error" ;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# $1 is the key id
|
||||
# $2 is the expected policy
|
||||
# The rest are additional options to pass to gpg.
|
||||
checkpolicy()
|
||||
{
|
||||
debug
|
||||
debug "checkpolicy($@)"
|
||||
|
||||
keyid=$1
|
||||
shift
|
||||
expected_policy=$1
|
||||
shift
|
||||
policy=$(getpolicy "$keyid" ${@:+"$@"})
|
||||
if test "x$policy" != "x$expected_policy"
|
||||
then
|
||||
echo "$keyid: Expected policy to be \`$expected_policy', but got \`$policy'."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# $1 is the keyid of the trust level to lookup. Any remaining
|
||||
# arguments are simply passed to GPG.
|
||||
#
|
||||
# This function only supports keys with a single user id.
|
||||
gettrust()
|
||||
{
|
||||
keyid=$1
|
||||
if test x$keyid = x
|
||||
then
|
||||
echo No keyid supplied!
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
|
||||
trust=$(debug_exec $GPG --tofu-db-format=$format --trust-model=tofu \
|
||||
--with-colons $@ --list-keys "$keyid" \
|
||||
| awk -F: '/^pub:/ { print $2 }')
|
||||
if test $(echo "$trust" | wc -l) -ne 1
|
||||
then
|
||||
echo "error"
|
||||
else
|
||||
case $trust in
|
||||
[oidreqnmfuws-]) echo $trust ;;
|
||||
*) echo "Bad trust value: $trust" >&2; echo "error" ;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# $1 is the key id
|
||||
# $2 is the expected trust level
|
||||
# The rest are additional options to pass to gpg.
|
||||
checktrust()
|
||||
{
|
||||
debug
|
||||
debug "checktrust($@)"
|
||||
|
||||
keyid=$1
|
||||
shift
|
||||
expected_trust=$1
|
||||
shift
|
||||
trust=$(gettrust "$keyid" ${@:+"$@"})
|
||||
if test "x$trust" != "x$expected_trust"
|
||||
then
|
||||
echo "$keyid: Expected trust to be \`$expected_trust', but got \`$trust'."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Set key $1's policy to $2. Any remaining arguments are passed as
|
||||
# options to gpg.
|
||||
setpolicy()
|
||||
{
|
||||
debug
|
||||
debug "setpolicy($@)"
|
||||
|
||||
keyid=$1
|
||||
shift
|
||||
policy=$1
|
||||
shift
|
||||
|
||||
debug_exec $GPG --tofu-db-format=$format \
|
||||
--trust-model=tofu ${@:+"$@"} --tofu-policy $policy $keyid
|
||||
}
|
||||
|
||||
for format in split flat
|
||||
do
|
||||
debug
|
||||
debug "Testing with db format $format"
|
||||
|
||||
# Carefully remove the TOFU db.
|
||||
test -e $GNUPGHOME/tofu.db && rm $GNUPGHOME/tofu.db
|
||||
test -e $GNUPGHOME/tofu.d/email && rm -r $GNUPGHOME/tofu.d/email
|
||||
test -e $GNUPGHOME/tofu.d/key && rm -r $GNUPGHOME/tofu.d/key
|
||||
# This will fail if the directory is not empty.
|
||||
test -e $GNUPGHOME/tofu.d && rmdir $GNUPGHOME/tofu.d
|
||||
|
||||
# Verify a message. There should be no conflict and the trust policy
|
||||
# should be set to auto.
|
||||
debug_exec $GPG --tofu-db-format=$format --trust-model=tofu \
|
||||
--verify $srcdir/tofu-2183839A-1.txt
|
||||
|
||||
checkpolicy 2183839A auto
|
||||
|
||||
trust=$(gettrust 2183839A)
|
||||
debug "default trust = $trust"
|
||||
if test "x$trust" != xm
|
||||
then
|
||||
echo "Wrong default trust. Got: \`$trust', expected \`m'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Trust should be derived lazily. Thus, if the policy is set to auto
|
||||
# and we change --tofu-default-policy, then the trust should change as
|
||||
# well. Try it.
|
||||
checktrust 2183839A f --tofu-default-policy=good
|
||||
checktrust 2183839A - --tofu-default-policy=unknown
|
||||
checktrust 2183839A n --tofu-default-policy=bad
|
||||
|
||||
# Change the policy to something other than auto and make sure the
|
||||
# policy and the trust are correct.
|
||||
for policy in good unknown bad
|
||||
do
|
||||
if test $policy = good
|
||||
then
|
||||
expected_trust='f'
|
||||
elif test $policy = unknown
|
||||
then
|
||||
expected_trust='-'
|
||||
else
|
||||
expected_trust='n'
|
||||
fi
|
||||
|
||||
debug
|
||||
debug "Setting TOFU policy to $policy"
|
||||
setpolicy 2183839A $policy
|
||||
|
||||
# Since we have a fixed policy, the trust level shouldn't
|
||||
# change if we change the default policy.
|
||||
for default_policy in auto good unknown bad ask
|
||||
do
|
||||
checkpolicy 2183839A $policy --tofu-default-policy=$default_policy
|
||||
checktrust 2183839A $expected_trust \
|
||||
--tofu-default-policy=$default_policy
|
||||
done
|
||||
done
|
||||
|
||||
# BC15C85A conflicts with 2183839A. On conflict, this will set
|
||||
# BC15C85A to ask. If 2183839A is auto (it's not, it's bad), then
|
||||
# it will be set to ask.
|
||||
debug_exec $GPG --tofu-db-format=$format --trust-model=tofu \
|
||||
--verify $srcdir/tofu-BC15C85A-1.txt
|
||||
checkpolicy BC15C85A ask
|
||||
checkpolicy 2183839A bad
|
||||
|
||||
# EE37CF96 conflicts with 2183839A and BC15C85A. We change
|
||||
# BC15C85A's policy to auto and leave 2183839A's policy at bad.
|
||||
# This conflict should cause BC15C85A's policy to be changed to
|
||||
# ask (since it is auto), but not affect 2183839A's policy.
|
||||
setpolicy BC15C85A auto
|
||||
checkpolicy BC15C85A auto
|
||||
debug_exec $GPG --tofu-db-format=$format --trust-model=tofu \
|
||||
--verify $srcdir/tofu-EE37CF96-1.txt
|
||||
checkpolicy BC15C85A ask
|
||||
checkpolicy 2183839A bad
|
||||
checkpolicy EE37CF96 ask
|
||||
done
|
||||
|
||||
exit 0
|
Loading…
Add table
Add a link
Reference in a new issue