[FIXED] Mejora en script sops_rules.sh para usar fingerprints GPG
- Corregido el método para obtener los fingerprints GPG completos (40 caracteres) - Mejorada la visualización de las claves mostrando la parte corta del fingerprint - Añadido manejo para claves sin información de usuario - Mejor procesamiento del fingerprint seleccionado - Información más detallada en la confirmación final 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
82836ba642
commit
cc3864a342
1 changed files with 20 additions and 8 deletions
|
@ -120,9 +120,9 @@ validate_fingerprint() {
|
|||
return 0
|
||||
}
|
||||
|
||||
# Función para obtener las claves GPG disponibles
|
||||
# Función para obtener las claves GPG disponibles con sus huellas digitales
|
||||
get_available_keys() {
|
||||
gpg --list-keys --with-colons | grep -E "^pub" | awk -F: '{print $5}'
|
||||
gpg --list-keys --with-colons | grep -E "^fpr" | awk -F: '{print $10}'
|
||||
}
|
||||
|
||||
# Función para mostrar un error y esperar confirmación
|
||||
|
@ -131,12 +131,18 @@ show_error() {
|
|||
gum input --placeholder "Presiona Enter para continuar..."
|
||||
}
|
||||
|
||||
# Función para obtener información de la clave
|
||||
# Función para obtener información de la clave a partir del fingerprint
|
||||
get_key_info() {
|
||||
local fingerprint=$1
|
||||
local key_info=$(gpg --list-keys --with-colons "$fingerprint")
|
||||
local user_id=$(echo "$key_info" | grep -E "^uid" | head -n 1 | awk -F: '{print $10}')
|
||||
echo "$user_id"
|
||||
|
||||
# Si no hay información de usuario, mostrar solo el fingerprint
|
||||
if [ -z "$user_id" ]; then
|
||||
echo "Sin información de usuario"
|
||||
else
|
||||
echo "$user_id"
|
||||
fi
|
||||
}
|
||||
|
||||
# Ruta donde se creará el archivo .sops.yaml
|
||||
|
@ -166,17 +172,22 @@ fi
|
|||
|
||||
# Mostrar información y permitir selección
|
||||
echo
|
||||
gum style --foreground "#00AAFF" "Claves GPG disponibles:"
|
||||
gum style --foreground "#00AAFF" "Claves GPG disponibles (Fingerprints):"
|
||||
echo
|
||||
|
||||
# Formatear opciones para mostrar información clara
|
||||
KEY_OPTIONS=()
|
||||
for key in "${AVAILABLE_KEYS[@]}"; do
|
||||
key_info=$(get_key_info "$key")
|
||||
KEY_OPTIONS+=("$key ($key_info)")
|
||||
# Formatear la clave para mostrar solo los últimos 8 caracteres y la información de usuario
|
||||
key_short="${key:(-8)}"
|
||||
KEY_OPTIONS+=("$key - $key_short ($key_info)")
|
||||
done
|
||||
|
||||
# Seleccionar la clave
|
||||
SELECTED_KEY_FULL=$(gum choose "${KEY_OPTIONS[@]}")
|
||||
SELECTED_KEY=$(echo "$SELECTED_KEY_FULL" | awk '{print $1}')
|
||||
# Extraer el fingerprint completo (la primera palabra antes del guion)
|
||||
SELECTED_KEY=$(echo "$SELECTED_KEY_FULL" | cut -d ' ' -f 1)
|
||||
|
||||
# Validar la selección
|
||||
if [ -z "$SELECTED_KEY" ]; then
|
||||
|
@ -201,7 +212,8 @@ fi
|
|||
# Confirmar la selección
|
||||
echo
|
||||
gum style --foreground "#00FF00" "Se utilizará la siguiente clave para encriptación SOPS:"
|
||||
gum style "Fingerprint: $SELECTED_KEY"
|
||||
gum style "Fingerprint completo: $SELECTED_KEY"
|
||||
gum style "ID corto: ${SELECTED_KEY:(-8)}"
|
||||
gum style "Usuario: $(get_key_info "$SELECTED_KEY")"
|
||||
echo
|
||||
|
||||
|
|
Loading…
Reference in a new issue