#!/bin/sh -efu

. shell-error

keyfile="$1"; shift
uid_pattern='^uid[[:space:]]+.*[[:space:]]+<[^@]+(@| at )altlinux(\.| dot )(com|net|org|ru)>$'

tempdir=
cleanup_handler()
{
	trap - EXIT
	[ -z "$tempdir" ] || rm -rf "$tempdir"
	exit "$@"
}

exit_handler()
{
	cleanup_handler $?
}

signal_handler()
{
	cleanup_handler 143
}

trap exit_handler EXIT
trap signal_handler HUP PIPE INT QUIT TERM
tempdir="$(mktemp -td alt-gpgkeys.XXXXXX)"

export LANG=C
export GNUPGHOME="$tempdir"

gpg --import "$keyfile" 2>/dev/null ||
	fatal "$keyfile: Invalid gpg key file"

n="$(gpg --list-keys 2>/dev/null |grep -c '^pub[[:space:]]\+')" ||
	fatal "$keyfile: No public keys found"
[ "$n" = 1 ] ||
	fatal "$keyfile: Too many ($n) keys found"

gpg --list-keys 2>/dev/null |egrep -qs "$uid_pattern" ||
	fatal "$keyfile: No valid altlinux uid was found"

gpg --list-keys 2>/dev/null |grep '^uid[[:space:]]\+' |egrep -vqs "$uid_pattern" &&
	fatal "$keyfile: Non altlinux uid detected"

gpg --list-keys 2>/dev/null |grep -qs '^sub[[:space:]]\+' &&
	fatal "$keyfile: Subkey detected"

exit 0
