Utilizzando Linux per lavoro può capitare di avere a che fare con documenti in formato .p7m. Il formato .p7m identifica un file firmato digitalmente, nello specifico un documento informatico a cui è stata aggiunta una firma digitale in formato CAdES (Cryptographic Message Syntax Advanced Electronic Signature). In pratica, quando si firma digitalmente un documento (come PDF, Word, ecc.), il file originale viene “incapsulato” in una busta informatica con estensione .p7m, che contiene sia il documento originale che la firma digitale. La firma digitale in formato .p7m ha piena validità legale in Italia, sostituendo la firma autografa in molti contesti.

Per aprire questi file e necessario disporre di software idonei ma su Linux la loro fruizione non è proprio agevole. Personalmente preferisco l’approccio da command line.

Script

Come prerequisito va installato OpenSSL e successivamente va creato lo script apposito.

$ sudo apt install openssl
$ sudo vi /usr/local/bin/extract_p7m_to_pdf.sh

n.b. mettendo nel path indicato sarà eseguibile indipendentemente dal path in cui viene richiamato.

#!/bin/bash
# Check for input file
if [ -z "$1" ]; then
  echo "Usage: $0 file.p7m"
  exit 1
fi

INPUT="$1"
BASENAME=$(basename "$INPUT" .p7m)
OUTPUT="${BASENAME}.pdf"
TEMPFILE="/tmp/${BASENAME}.raw"

# Extract the original file using OpenSSL
openssl smime -verify -inform DER -in "$INPUT" -noverify -out "$TEMPFILE" 2>/dev/null

if [ $? -ne 0 ]; then
  echo "Failed to extract content from $INPUT. Not a valid .p7m or corrupted file."
  exit 2
fi

# Check if the extracted file is a PDF
if file "$TEMPFILE" | grep -q "PDF document"; then
  mv "$TEMPFILE" "$OUTPUT"
  echo "PDF extracted successfully: $OUTPUT"
else
  echo "Extracted content is not a PDF. Saved as: $TEMPFILE"
fi

Successivamente andiamo a dare i permessi di esecuzione al file.

$ sudo chmod +x /usr/local/bin/extract_p7m_to_pdf.sh

Per utilizzare il comando sarà sufficiente specificare il file da convertire

 $ extract_p7m_to_pdf.sh 'Nome file p7m'

Categories:

No responses yet

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

I cookie sono file di testo che vengono temporaneamente memorizzati sul disco rigido del computer ogni volta che si visita un sito web. Quando si esplora il nostro sito alcune informazioni vengono acquisite automaticamente a fini statistici o informativi e consentono un miglior servizio. Le informazioni potrebbero permettere l’identificazione del visitatore.
Tra queste informazioni ci sono:

Questi dati sono anonimi e vengono elaborati e archiviati solo per fini statistici. Ci sono diversi tipi di Cookie, ognuno di essi segue il comportamento degli utenti per rendere l’esperienza complessiva più veloce, più facile e più efficiente. I cookie non possono danneggiare il tuo computer e non contengono informazioni personali o riservate.

Qui di seguito puoi trovare i tipi di cookie utilizzati sul nostro sito e perché li usiamo:

Analytics Cookies: questi cookie vengono utilizzati per misurare e analizzare come i clienti utilizzano il nostro sito web. Utilizziamo queste informazioni per migliorare la vostra esperienza sul nostro sito.

Altri cookie vengono utilizzati in forma automatica per fornire servizi quali, a titolo esemplificativo e non esaustivo, la risposta agli articoli scritti, l’invio di richieste di assistenza o informative. La maggioranza dei browser web accetta i cookie. Tuttavia si ha la possibilità di rifiutare i cookies modificando le impostazioni del tuo browser.

NOTA BENE: se si disabilitano si rischia di perdere alcune delle funzionalità di questo sito web.

Chiudi