#!/bin/bash # Restore GPG key from backup file # Usage: gpg-restore-key [public-key-file] set -e if [[ $# -lt 1 ]]; then echo "Usage: gpg-restore-key [public-key-file]" echo "" echo "Examples:" echo " gpg-restore-key ~/private-key-backup.asc" echo " gpg-restore-key ~/private-key.asc ~/public-key.asc" exit 1 fi PRIVATE_KEY="$1" PUBLIC_KEY="${2:-}" if [[ ! -f $PRIVATE_KEY ]]; then echo "Error: File not found: $PRIVATE_KEY" exit 1 fi echo "Importing private key from $PRIVATE_KEY..." gpg --import "$PRIVATE_KEY" if [[ -n $PUBLIC_KEY && -f $PUBLIC_KEY ]]; then echo "" echo "Importing public key from $PUBLIC_KEY..." gpg --import "$PUBLIC_KEY" fi # Get the key ID that was just imported KEY_ID=$(gpg --list-secret-keys --keyid-format LONG 2>/dev/null | grep '^sec' | head -1 | sed 's/.*\/\([A-F0-9]*\) .*/\1/') if [[ -z $KEY_ID ]]; then echo "Error: Could not find imported key" exit 1 fi echo "" echo "Key imported successfully!" echo "" gpg --list-keys --keyid-format LONG "$KEY_ID" echo "" read -p "Do you want to trust this key ultimately? [y/N] " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "Setting ultimate trust..." echo -e "5\ny\n" | gpg --command-fd 0 --edit-key "$KEY_ID" trust 2>/dev/null echo "Done!" fi echo "" echo "Key ID: $KEY_ID" echo "Update your neomutt config with:" echo " set pgp_sign_as = 0x$KEY_ID"