X-Git-Url: https://codewiz.org/gitweb?p=monkeysphere.git;a=blobdiff_plain;f=tests%2Fkeytrans;h=411b42ec2b0c5cdc883a5530eb1f3d15c7c449e8;hp=bad2ae3a15839f8dd27d2245f3bd2fcfce3ac178;hb=e3bb810e188cae2d40a5191500a501c85cb93381;hpb=48af03c6bade14ec20256c24ef234cab79e1fb35 diff --git a/tests/keytrans b/tests/keytrans index bad2ae3..411b42e 100755 --- a/tests/keytrans +++ b/tests/keytrans @@ -17,12 +17,19 @@ set -e # piped commands should return the code of the first non-zero return set -o pipefail -export TESTDIR=$(dirname "$0") +# make sure the TESTDIR is an absolute path, not a relative one. +export TESTDIR=$(cd $(dirname "$0") && pwd) source "$TESTDIR"/common -## setup trap -trap failed_cleanup EXIT +perl -MCrypt::OpenSSL::RSA -e 1 2>/dev/null || { echo "You must have the perl module Crypt::OpenSSL::RSA installed to run this test. +On debian-derived systems, you can set this up with: + apt-get install libcrypt-openssl-rsa-perl" ; exit 1; } + +perl -MDigest::SHA -e 1 2>/dev/null || { echo "You must have the perl module Digest::SHA installed to run this test. +On debian-derived systems, you can set this up with: + apt-get install libdigest-sha1-perl" ; exit 1; } + ###################################################################### ### SETUP VARIABLES @@ -36,11 +43,15 @@ TEMPDIR=$(mktemp -d "${TMPDIR:-$TESTDIR/tmp}/monkeyspheretest.XXXXXXX") mkdir "$TEMPDIR"/bin ln -s "$TESTDIR"/../src/share/keytrans "$TEMPDIR"/bin/openpgp2ssh ln -s "$TESTDIR"/../src/share/keytrans "$TEMPDIR"/bin/pem2openpgp +ln -s "$TESTDIR"/../src/share/keytrans "$TEMPDIR"/bin/keytrans # Use the local copy of executables first, instead of system ones. # This should help us test without installing. export PATH="$TEMPDIR"/bin:"$PATH" +## setup trap +trap failed_cleanup EXIT + ###################################################################### ### TEST KEYTRANS @@ -48,6 +59,15 @@ echo "##################################################" echo "### generating openpgp key..." export GNUPGHOME="$TEMPDIR" chmod 700 "$TEMPDIR" + + +# create the key with the same preferences that monkeysphere uses. +cat > "$TEMPDIR"/gpg.conf < \ "$TEMPDIR"/test.pem +gpg --export-secret-key > "$TEMPDIR"/secret.key + +PEM2OPENPGP_USAGE_FLAGS=sign,certify \ +PEM2OPENPGP_TIMESTAMP="$timestamp" pem2openpgp testtest \ + < "$TEMPDIR"/test.pem > "$TEMPDIR"/converted.secret.key + echo "##################################################" echo "### reconvert key, and compare to key in gpg keyring..." diff -u \ - <(gpg --export-secret-key | hd) \ - <(PEM2OPENPGP_USAGE_FLAGS=sign,certify \ - PEM2OPENPGP_TIMESTAMP="$timestamp" pem2openpgp testtest < \ - "$TEMPDIR"/test.pem | hd ) + <(gpg --list-packets < "$TEMPDIR"/secret.key) \ + <(gpg --list-packets < "$TEMPDIR"/converted.secret.key) + +diff -u \ + <(hd "$TEMPDIR"/secret.key) \ + <(hd "$TEMPDIR"/converted.secret.key) + +KEYFPR=$(gpg --fingerprint --with-colons --list-keys | grep ^fpr | cut -f10 -d:) +KEYID=$(printf "%s" "$KEYFPR" | cut -b25-40) + +echo "conversions look good!" + +echo "Now working with key $KEYID at time $timestamp" + +gpg --check-trustdb +gpg --list-keys + + +echo "##################################################" +echo "### test User ID addition..." +< "$TEMPDIR"/secring.gpg \ +PEM2OPENPGP_TIMESTAMP="$timestamp" \ + PEM2OPENPGP_USAGE_FLAGS=sign,certify \ + keytrans adduserid "$KEYID" "monkeymonkey" | gpg --import + +gpg --check-trustdb +gpg --list-keys + +cat >"$TEMPDIR"/expectedout <"$TEMPDIR"/expectedout < "$TEMPDIR"/newkey.gpg + +NEWKEYFPR=$(< "$TEMPDIR"/newkey.gpg keytrans listfprs) +NEWKEYID=$( printf "%s" "$NEWKEYFPR" | cut -b25-40) + +< "$TEMPDIR"/newkey.gpg gpg --import + +< "$TEMPDIR"/secring.gpg \ +PEM2OPENPGP_TIMESTAMP="$timestamp" \ + keytrans adduserid "$KEYID" "baz" | gpg --import + +cat >"$TEMPDIR"/expectedout <"$TEMPDIR"/expectedout <