Stampa questa pagina
Giovedì, 14 Dicembre 2017 11:45

Verificare la firma della PEC con PHP

Scritto da
Vota questo articolo
(0 Voti)
PHP PHP http://devstickers.com/php

La PEC è, a tutti gli effetti un messaggio S/MIME. Così come riportato nella RFC 6109, il formato del messaggio è quello della sezione 3.4.3 della RFC 5751. Da queste letture si evince che la busta PEC, altro non è che un messaggio contenente più parti. Nella fattispecie, tra le intestazioni del messaggio ci sarà:

Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha1";

Per poter verificare il contenuto di una PEC sarà quindi necessario avere il messaggio completo. Questo può essere fatto nel seguente modo:

$raw_message = imap_fetchbody($this->imapStream, $uid_del_messaggio, '', FT_UID | FT_PEEK);
file_put_contents("/tmp/pec-message.eml", $msg);

In questo modo ho salvato in un file temporaneo il messaggio gresso. Da notare che il terzo parametro di imap_fetch_body è una stringa vuota. Normalmente questo parametro rappresenta la sezione del messagio che ci interessa scaricare. Pssando la stringa vuota come argomento, stiamo dicendo di essere interessati a tutto il messaggio

A questo punto la verifica è molto semplice:

$esito = openssl_pkcs7_verify("/tmp/pec-message.eml", 0);

I possibili risultati sono:

  • true: firma verificata
  • false: firma non verificata
  • -1: errore

Perciò non bisogna scordarsi, in fase di test del risultato, di usare il === invece del ==!

Letto 2520 volte Ultima modifica il Giovedì, 14 Dicembre 2017 11:48