#!/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