diff --git a/bin/sops_rules.sh b/bin/sops_rules.sh index d0dca1c..9634c63 100755 --- a/bin/sops_rules.sh +++ b/bin/sops_rules.sh @@ -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