4 TESTDIR
=$(readlink -f $(dirname $0))
8 configarchitecture
"i386"
15 # extract net_update() and import it
16 func
=$( sed -n -e '/^add_keys_with_verify_against_master_keyring/,/^}/p' ${BUILDDIRECTORY}/apt-key )
20 TRUSTEDFILE
=.
/etc
/apt
/trusted.gpg
21 mkdir -p .
/var
/lib
/apt
/keyrings
22 TMP_KEYRING
=.
/var
/lib
/apt
/keyrings
/maybe
-import-keyring.gpg
23 GPG_CMD
="gpg --ignore-time-conflict --no-options --no-default-keyring"
24 GPG
="$GPG_CMD --keyring $TRUSTEDFILE"
25 MASTER_KEYRING
=/usr
/share
/keyrings
/ubuntu
-master-keyring.gpg
27 # COPYIED from apt-key.in --------------
29 # gpg needs a trustdb to function, but it can't be invalid (not even empty)
30 # so we create a temporary directory to store our fresh readable trustdb in
31 TRUSTDBDIR
="$(mktemp -d)"
32 CURRENTTRAP
="${CURRENTTRAP} rm -rf '${TRUSTDBDIR}';"
33 trap "${CURRENTTRAP}" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
34 chmod 700 "$TRUSTDBDIR"
35 # We also don't use a secret keyring, of course, but gpg panics and
36 # implodes if there isn't one available - and writeable for imports
37 SECRETKEYRING
="${TRUSTDBDIR}/secring.gpg"
39 GPG_CMD
="$GPG_CMD --secret-keyring $SECRETKEYRING"
40 GPG_CMD
="$GPG_CMD --trustdb-name ${TRUSTDBDIR}/trustdb.gpg"
41 #----------------------------------------- END COPY
43 msgtest
"add_keys_with_verify_against_master_keyring"
44 if [ ! -e $MASTER_KEYRING ]; then
45 echo -n "No $MASTER_KEYRING found"
50 # test bad keyring and ensure its not added (LP: #857472)
51 ADD_KEYRING
=.
/keys
/exploid
-keyring-with-dupe-keys.pub
52 if add_keys_with_verify_against_master_keyring
$ADD_KEYRING $MASTER_KEYRING; then
58 # ensure the keyring is still empty
59 gpg_out
=$($GPG --list-keys)
60 msgtest
"Test if keyring is empty"
68 # test another possible attack vector using subkeys (LP: #1013128)
69 msgtest
"add_keys_with_verify_against_master_keyring with subkey attack"
70 ADD_KEYRING
=.
/keys
/exploid
-keyring-with-dupe-subkeys.pub
71 if add_keys_with_verify_against_master_keyring
$ADD_KEYRING $MASTER_KEYRING; then
77 # ensure the keyring is still empty
78 gpg_out
=$($GPG --list-keys)
79 msgtest
"Test if keyring is empty"
87 # test good keyring and ensure we get no errors
88 ADD_KEYRING
=/usr
/share
/keyrings
/ubuntu
-archive-keyring.gpg
89 if add_keys_with_verify_against_master_keyring
$ADD_KEYRING $MASTER_KEYRING; then
95 testequal
'./etc/apt/trusted.gpg
97 pub 1024D/437D05B5 2004-09-12
98 uid Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
99 sub 2048g/79164387 2004-09-12
101 pub 1024D/FBB75451 2004-12-30
102 uid Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>
104 pub 4096R/C0B21F32 2012-05-11
105 uid Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>
107 pub 4096R/EFE21092 2012-05-11
108 uid Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>