#!/bin/bash # Vim wrapper that auto-signs with yubisigner-cli after editing # Used by NeoMutt mail2news account # Creates PGP-like clearsign format with yubisigner signature set -euo pipefail # First argument is the file to edit FILE="$1" # Open vim for editing vim "$FILE" # Save original message ORIGINAL_MSG=$(cat "$FILE") # After vim exits, sign the message echo "" echo "Signing message with YubiKey..." # Kill gpg-agent to release YubiKey (it will auto-restart later) echo "Releasing YubiKey from gpg-agent..." gpgconf --kill gpg-agent 2>/dev/null || true sleep 1 # Sign with yubisigner-cli (PIN will be prompted via pinentry/zenity) if ! "$HOME/bin/yubisigner-with-pinentry" \ --input "$FILE" \ --author "Gab Virebent" \ --email "gabriel1@virebent.art" \ --url "https://contact.virebent.art" \ --comment "Posted via NeoMutt mail2news"; then echo "" echo "ERROR: yubisigner-cli failed!" echo "Press ENTER to continue WITHOUT signature..." read exit 0 fi # Check if signature was created if [ ! -f "$FILE.sig" ]; then echo "" echo "ERROR: Signature file not created!" echo "Press ENTER to continue WITHOUT signature..." read exit 0 fi # Create clearsign format (like PGP clearsign but with yubisigner signature) { echo "-----BEGIN YUBISIGNER SIGNED MESSAGE-----" echo "Hash: SHA256" echo "" echo "$ORIGINAL_MSG" echo "" cat "$FILE.sig" } > "$FILE.tmp" # Replace original file with clearsign version mv "$FILE.tmp" "$FILE" # Cleanup rm -f "$FILE.sig" echo "Message signed successfully"