35 lines
838 B
Bash
Executable file
35 lines
838 B
Bash
Executable file
#!/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" <<EOF
|
|
adduid
|
|
$NAME
|
|
$EMAIL
|
|
|
|
O
|
|
save
|
|
EOF
|
|
|
|
echo "Done! New UID added. Verify with: gpg --list-keys $KEY_ID"
|