#!/bin/bash # Add a new UID to an existing GPG key # Usage: gpg-add-uid "Name" "email@example.com" [key-id] set -e if [[ $# -lt 2 ]]; then echo 'Usage: gpg-add-uid "Name" "email@example.com" [key-id]' echo "" echo "If key-id is not provided, uses the first secret key found." exit 1 fi NAME="$1" EMAIL="$2" KEY_ID="${3:-$(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: No GPG secret key found. Create one first with: gpg --full-generate-key" exit 1 fi echo "Adding UID '$NAME <$EMAIL>' to key $KEY_ID" # Use expect-like input via gpg --command-fd gpg --batch --command-fd 0 --edit-key "$KEY_ID" <