#!/bin/bash
readonly PROG_NAME="Apertura di file p7m"
if [ "$(which zenity)" == "" ]; then
echo "Errore: zenity non presente. Installare zenity."
exit 10
fi
IN_FILE=""
if [ "$1" == "" ]; then
IN_FILE=$(zenity --file-selection \
--title="Seleziona un file p7m" --file-filter="file firmati | *.p7m *.P7m *P7M" 2> /dev/null)
else
IN_FILE="$1"
fi
if [ "$IN_FILE" == "" ]; then
echo "nessun file selezionato"
exit 1 # nessun file selezionato
fi
if [ ! -f "$IN_FILE" ]; then
echo "file inesistente"
exit 2 # file inesistente
fi
# nome dei file di output
outfile=${IN_FILE::-4} # l'estensione deve essere ".p7m", 4 caratteri
outfilecert="$IN_FILE.cert"
# estrazione
openssl smime -verify -inform DER -in "$IN_FILE" -noverify -out "$outfile"
openssl pkcs7 -inform DER -print_certs -text -in "$IN_FILE" -out "$outfilecert"
# esito
outfile_senzaext=${outfile%.*}
if [ "$outfile_senzaext" == "$outfile" ]; then
messaggio="Estrazione terminata: sono stati creati i due file\n\"$outfile\"\n\"$outfilecert\""
messaggio="$messaggio\n\nATTENZIONE!\nRinominare in modo appropriato il file di output;provare ad esempio\n\"$outfile.pdf\""
zenity --info --text "$messaggio" --title "$PROG_NAME" 2> /dev/null
else
echo "creati i file"
echo " - \"$outfile\""
echo " - \"$outfilecert\""
xdg-open "$outfile"
xdg-open "$outfilecert"
fi