chiark / gitweb /
new script to audit the FDroid.apk on https://f-droid.org
authorHans-Christoph Steiner <hans@eds.org>
Fri, 5 Jan 2018 13:08:14 +0000 (14:08 +0100)
committerHans-Christoph Steiner <hans@eds.org>
Fri, 5 Jan 2018 13:08:14 +0000 (14:08 +0100)
This makes sure its signed by the F-Droid key.

tests/check-fdroid-apk [new file with mode: 0755]

diff --git a/tests/check-fdroid-apk b/tests/check-fdroid-apk
new file mode 100755 (executable)
index 0000000..bd1121a
--- /dev/null
@@ -0,0 +1,321 @@
+#!/bin/bash
+#
+# Download and verify that the FDroid.apk is signed by the right PGP
+# key.  The gpg key model is to trust only the key that is included in
+# this script, so there is a test to check that it is starting with an
+# empty keyring.
+#
+# To be run in a daily cronjob at a random time of day, e.g.:
+#
+#   0 0 * * *   perl -le 'sleep rand 86400'; ./check-fdroid-apk
+#
+# One instance of this is here:
+# https://verification.f-droid.org/check-fdroid-apk/
+
+set -e
+
+curl="curl --user-agent F-Droid"
+gpg="gpg"
+if [ "$1" = "-v" ]; then
+    set -x
+    verbose=true
+else
+    curl="$curl --silent"
+    gpg="$gpg --quiet"
+    verbose=false
+fi
+
+test -e /tmp/.testfiles || mkdir /tmp/.testfiles
+dldir=`mktemp -d /tmp/.testfiles/run-tests.XXXX`
+
+export GNUPGHOME="$dldir"
+
+key="${dldir}/key.asc"
+apk="${dldir}/FDroid.apk"
+asc="${apk}.asc"
+log=/var/www/html/check-fdroid-apk/`date +%s`.txt
+
+$curl https://f-droid.org/FDroid.apk > $apk
+$curl https://f-droid.org/FDroid.apk.asc > $asc
+
+fingerprint=37D2C98789D8311948394E3E41E7044E1DBA2E89
+
+cat > $key <<- EOF
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+Comment: GPG for Android - https://guardianproject.info/code/gnupg/
+
+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
+893KN8JX2ozmsF4k
+=w75J
+-----END PGP PUBLIC KEY BLOCK-----
+EOF
+
+! $gpg --list-keys | grep pub
+$gpg --import $key
+$gpg --list-key --fingerprint | tr -d '[:space:]' | grep $fingerprint > /dev/null
+echo ${fingerprint}:6: | $gpg --import-ownertrust > /dev/null 2>&1
+sha256=`sha256sum $apk`
+echo $sha256 >> $log
+touch ${log}.${sha256}
+if $gpg --batch --trust-model always --verify $asc $apk >> $log 2>&1; then
+    rm -rf $dldir
+else
+    echo Failed to verify $apk
+    touch ${log}.failed
+fi