#!/bin/sh # Copyright 2016 g10 Code GmbH # # 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. if [ -z "$srcdir" ]; then echo "not called from make" >&2 exit 1 fi unset GNUPGHOME set -e # (We may not use a relative name for gpg-agent.) GPG_AGENT="$(cd ../../agent && /bin/pwd)/gpg-agent" GPG="../../g10/gpg --no-permission-warning --no-greeting --no-secmem-warning --batch --agent-program=${GPG_AGENT}|--debug-quick-random" TEST="from-classic" setup_home() { XGNUPGHOME="`mktemp -d`" rm -rf -- scratch mkdir -p "$XGNUPGHOME" for F in $srcdir/$TEST.gpghome/*.asc; do $GPG --dearmor <"$F" >"$XGNUPGHOME/`basename $F .asc`" done chmod go-rwx $XGNUPGHOME/* export GNUPGHOME="$XGNUPGHOME" } cleanup_home() { rm -rf -- "$XGNUPGHOME" } trigger_migration() { $GPG --list-secret-keys >/dev/null 2>&1 } assert_migrated() { test -f $GNUPGHOME/.gpg-v21-migrated for KEY in D74C5F22 C40FDECF ECABF51D; do $GPG --list-secret-keys $KEY >/dev/null done } setup_home trigger_migration assert_migrated cleanup_home # Test with an existing private-keys-v1.d. setup_home mkdir "$GNUPGHOME/private-keys-v1.d" trigger_migration assert_migrated cleanup_home # Test with an existing private-keys-v1.d with weird permissions. setup_home mkdir "$GNUPGHOME/private-keys-v1.d" chmod 0 "$GNUPGHOME/private-keys-v1.d" trigger_migration assert_migrated cleanup_home # XXX Check a case where the migration fails.