# File p7m contenenti file binario

**URL:** <https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522>\
**Category:** Fatturazione Elettronica\
**Created:** [6 Marzo 2019, 1:50pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522 "2019-03-06T13:50:26Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Romolo\_Manfredini](https://forum.italia.it/user_avatar/forum.italia.it/romolo_manfredini/32/1934_2.png) [@Romolo\_Manfredini](https://forum.italia.it/u/Romolo_Manfredini)\
**Post date:** [14 Marzo 2019, 4:43pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/21 "2019-03-14T16:43:42Z")

</div>

in php la decodifica del p7m non è difficile, ho postato le istruzioni qui sul forum.  
E la decodifica del base64 è alquanto banale…

---

<div class="post-metadata">

**Author:** ![MARCOB69](https://forum.italia.it/letter_avatar_proxy/v4/letter/m/54ee81/32.png) [@MARCOB69](https://forum.italia.it/u/MARCOB69)\
**Post date:** [3 Aprile 2019, 5:39pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/22 "2019-04-03T17:39:06Z")

</div>

posso chiedere una cortesia. Nel sito dell’Agenzia riesco a creare il pdf delle fatture ricevute in formato xlm ma non quelle in formato p7m. Sapete aiutarmi come e dove posso trovare uno strumento per creare il pdf? Grazie mille

---

<div class="post-metadata">

**Author:** ![genesi](https://forum.italia.it/letter_avatar_proxy/v4/letter/g/53a042/32.png) [@genesi](https://forum.italia.it/u/genesi)\
**Post date:** [4 Aprile 2019, 9:05am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/23 "2019-04-04T09:05:59Z")

</div>

Scusami ma non so se ho capito bene, intendi uno strumento esterno oppure una procedura (magari in c# o altro in .NET) da includere nel vostro software?  
Nel primo caso ti basta scaricare il dike (che è gratuito).  
Nel secondo caso, eventualmente, ti posso postare la procedura per estrarre il contenuto del file p7m (poi, per la conversione da xml a pdf ti conviene trasformarlo in html, usando un css che più ti aggrada, e da li al pdf è un attimo con i mille tool dipsonibili)

---

<div class="post-metadata">

**Author:** ![Simocigni](https://forum.italia.it/letter_avatar_proxy/v4/letter/s/ecb155/32.png) [@Simocigni](https://forum.italia.it/u/Simocigni)\
**Post date:** [10 Aprile 2019, 6:49am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/24 "2019-04-10T06:49:38Z")

</div>

Salve,  
per risolvere anche un altrro problema sugli zip adesso i file mi arrivano ancora su un server Unix ma li decripto e decomprimop su un server linux.  
Quindi se ho capito bene dovrei togliere tutti i CR con il sed e portare il file su una sola riga, poi lanciare openssl base64 -A.  
Corretto?

---

<div class="post-metadata">

**Author:** ![vbato](https://forum.italia.it/letter_avatar_proxy/v4/letter/v/3e96dc/32.png) [@vbato](https://forum.italia.it/u/vbato)\
**Post date:** [10 Aprile 2019, 9:29am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/25 "2019-04-10T09:29:28Z")

</div>

> [@Simocigni](#):
>
> Quindi se ho capito bene dovrei togliere tutti i CR con il sed e portare il file su una sola riga, poi lanciare openssl base64 -A.

Sarebbe `openssl base64 -d -A`.  
La prima cosa che devi fare è capire se il file è codificato in base64, poi:

- Se è codificato in base64, esegui il comando `cat IT12345678901_XXXXX.xml.p7m | tr -d '\r\n' | openssl base64 -d -A | openssl smime -verify -inform DER -noverify -out IT12345678901_XXXXX.xml`
- Se non è codificato in base64 (quindi è un p7m vero), esegui `openssl smime -verify -inform DER -noverify -in IT12345678901_XXXXX.xml.p7m -out IT12345678901_XXXXX.xml`

---

<div class="post-metadata">

**Author:** ![PaolaP](https://forum.italia.it/letter_avatar_proxy/v4/letter/p/b5e925/32.png) [@PaolaP](https://forum.italia.it/u/PaolaP)\
**Post date:** [18 Novembre 2019, 9:32am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/26 "2019-11-18T09:32:05Z")

</div>

Salve Vladan,  
ho lo stesso problema di Simocigni.  
Il file che devo convertire è effettivamente in formato base64.  
Se eseguo:  
openssl base64 -d -A -in nomefileP7M -out nomefileXML  
crea effettivamente il file xml, ma contiene dei caratteri strani all’inizio e alla fine e qualche carattere strano è sparso nell’xml.  
Ho provato a eseguire il comando che suggerivi:  
cat nomefileP7M | tr -d ‘\r\n’ | openssl base64 -d -A | openssl smime -verify -inform DER -noverify -out nomefileXML  
Ma la risposta è:  
| non atteso  
Puoi aiutarmi? Grazie in anticipo Paola

---

<div class="post-metadata">

**Author:** ![PaolaP](https://forum.italia.it/letter_avatar_proxy/v4/letter/p/b5e925/32.png) [@PaolaP](https://forum.italia.it/u/PaolaP)\
**Post date:** [18 Novembre 2019, 10:45am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/27 "2019-11-18T10:45:43Z")

</div>

Salve,  
non importa perdiate tempo a rispondermi. Grazie lo stesso Paola

---

<div class="post-metadata">

**Author:** ![PaolaP](https://forum.italia.it/letter_avatar_proxy/v4/letter/p/b5e925/32.png) [@PaolaP](https://forum.italia.it/u/PaolaP)\
**Post date:** [18 Novembre 2019, 11:59am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/28 "2019-11-18T11:59:30Z")

</div>

Scusate avevo dimenticato dirvi che ho risolto. saluti Paola

---

<div class="post-metadata">

**Author:** ![MicheleMaran](https://forum.italia.it/letter_avatar_proxy/v4/letter/m/f9ae1b/32.png) [@MicheleMaran](https://forum.italia.it/u/MicheleMaran)\
**Post date:** [22 Novembre 2019, 10:36am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/29 "2019-11-22T10:36:25Z")

</div>

Buongiorno  
stiamo verificando un problema similare dove però il file non è codificato BASE64. DIKE estrae l’XML senza problemi mentre openSSL va in errore:  
openssl smime -verify -in C:\OpenSSL-Win64\bin\actalis.p7m -inform DER -noverify -out C:\OpenSSL-Win64\bin\actalis.xml

8552:error:0D0680A8:asn1 encoding routines:asn1\_check\_tlen:wrong tag:crypto\asn1\tasn\_dec.c:1130:  
8552:error:0D07803A:asn1 encoding routines:asn1\_item\_embed\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:290:Type=PKCS7\_ISSUER\_AND\_SERIAL  
8552:error:0D08303A:asn1 encoding routines:asn1\_template\_noexp\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:627:Field=issuer\_and\_serial, Type=PKCS7\_SIGNER\_INFO  
8552:error:0D08303A:asn1 encoding routines:asn1\_template\_noexp\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:596:Field=signer\_info, Type=PKCS7\_SIGNED  
8552:error:0D08303A:asn1 encoding routines:asn1\_template\_noexp\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:627:  
8552:error:0D08403A:asn1 encoding routines:asn1\_template\_ex\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:477:Field=d.sign, Type=PKCS7  
L’errore è sistematico e solo -al momento- su pacchetti firmati da certificato emesso da Actalis (Aruba). Ecco il file per chi volesse darmi una mano: [https://maranmichele-my.sharepoint.com/:f:/g/personal/maranmichele\_maranmichele\_it/EisGPUW-6RlHt9PAIzXvmtEB\_MCJZk5uQ4V-rtB\_R3ZeXg?e=lbM5WDù](https://maranmichele-my.sharepoint.com/:f:/g/personal/maranmichele_maranmichele_it/EisGPUW-6RlHt9PAIzXvmtEB_MCJZk5uQ4V-rtB_R3ZeXg?e=lbM5WD%C3%B9)  
Qualche idea?  
Grazie

---

<div class="post-metadata">

**Author:** ![vbato](https://forum.italia.it/letter_avatar_proxy/v4/letter/v/3e96dc/32.png) [@vbato](https://forum.italia.it/u/vbato)\
**Post date:** [22 Novembre 2019, 3:18pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/30 "2019-11-22T15:18:26Z")

</div>

Ciao. Usando il comando “openssl cms” invece di “openssl smime” dovrebbe funzionare. I due comandi fanno più o meno la stessa cosa, ma il comando cms “digerisce” una varietà più ampia di file.  
Maggiori informazioni qui:

> <https://security.stackexchange.com/questions/41399/openssl-pkcs7-vs-s-mime/41413#41413>

---

<div class="post-metadata">

**Author:** ![MicheleMaran](https://forum.italia.it/letter_avatar_proxy/v4/letter/m/f9ae1b/32.png) [@MicheleMaran](https://forum.italia.it/u/MicheleMaran)\
**Post date:** [22 Novembre 2019, 3:58pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/31 "2019-11-22T15:58:40Z")

</div>

Direi perfetto. Funziona a meraviglia.  
Grazie mille per il suggerimento.  
Buona continuazione

---

<div class="post-metadata">

**Author:** ![alb84](https://forum.italia.it/letter_avatar_proxy/v4/letter/a/9de0a6/32.png) [@alb84](https://forum.italia.it/u/alb84)\
**Post date:** [19 Febbraio 2020, 3:42pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/32 "2020-02-19T15:42:11Z")

</div>

Confermo, funziona!

Ho avuto lo stesso problema con tutte le fatture provenienti da Enel Energia SpA.  
Fino a gennaio funzionava openssl smime  
Da febbraio ha iniziato ad uscire  
Error reading S/MIME message  
ASN1\_CHECK\_TLEN wrong tag tasn\_dec.c

Aggiornando OpenSSL e modificando il bat sostituendo  
`"C:\Program Files (x86)\GNU\openssl-0.9.8h-1-bin\bin\openssl.exe" smime -verify -in %1 -inform der -noverify -signer "%~dp1%filename%.cert.pem" -out "%~dp1%filename%"`  
con  
`"C:\Program Files (x86)\GNU\openssl-1.0.2u-x64_86-win64\openssl.exe" cms -verify -in %1 -inform der -noverify -signer "%~dp1%filename%.cert.pem" -out "%~dp1%filename%"`  
ora funziona anche con le fatture di Enel Energia SpA

---

<div class="post-metadata">

**Author:** ![Paolo\_Ferraris](https://forum.italia.it/user_avatar/forum.italia.it/paolo_ferraris/32/2619_2.png) [@Paolo\_Ferraris](https://forum.italia.it/u/Paolo_Ferraris)\
**Post date:** [26 Febbraio 2020, 7:47am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/33 "2020-02-26T07:47:35Z")

</div>

Ho lo stesso problema con fatture Enel Energia

lancio il comando  
openssl smime -verify -noverify -in file.p7m -inform DER -out file.xml 2\>&1

Mi restituisce l’errore  
Error reading S/MIME message  
11108:error:0D0680A8:asn1 encoding routines:ASN1\_CHECK\_TLEN:wrong tag:.\crypto\asn1\tasn\_dec.c:1316:  
11108:error:0D07803A:asn1 encoding routines:ASN1\_ITEM\_EX\_D2I:nested asn1 error:.\crypto\asn1\tasn\_dec.c:380:Type=PKCS7\_ISSUER\_AND\_SERIAL  
11108:error:0D08303A:asn1 encoding routines:ASN1\_TEMPLATE\_NOEXP\_D2I:nested asn1 error:.\crypto\asn1\tasn\_dec.c:748:Field=issuer\_and\_serial, Type=PKCS7\_SIGNER\_INFO  
11108:error:0D08303A:asn1 encoding routines:ASN1\_TEMPLATE\_NOEXP\_D2I:nested asn1 error:.\crypto\asn1\tasn\_dec.c:709:Field=signer\_info, Type=PKCS7\_SIGNED  
11108:error:0D08303A:asn1 encoding routines:ASN1\_TEMPLATE\_NOEXP\_D2I:nested asn1 error:.\crypto\asn1\tasn\_dec.c:748:  
11108:error:0D08403A:asn1 encoding routines:ASN1\_TEMPLATE\_EX\_D2I:nested asn1 error:.\crypto\asn1\tasn\_dec.c:578:Field=d.sign, Type=PKCS7

Qualcuno sa darmi qualche dritta? 😅

---

<div class="post-metadata">

**Author:** ![Paolo\_Ferraris](https://forum.italia.it/user_avatar/forum.italia.it/paolo_ferraris/32/2619_2.png) [@Paolo\_Ferraris](https://forum.italia.it/u/Paolo_Ferraris)\
**Post date:** [26 Febbraio 2020, 7:57am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/34 "2020-02-26T07:57:59Z")

</div>

ho aggiornato openssl e cambiato in  
openssl cms -verify -noverify -in 'file.p7m -inform DER -out file.xml 2\>&1

grazie grazie

---

<div class="post-metadata">

**Author:** ![itajackass](https://forum.italia.it/user_avatar/forum.italia.it/itajackass/32/2992_2.png) [@itajackass](https://forum.italia.it/u/itajackass)\
**Post date:** [14 Aprile 2020, 7:28am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/35 "2020-04-14T07:28:47Z")

</div>

Ciao anche io ho problemi con le fatture di Enel Energia!  
Ma ahimè non riesco a far funzionare openssl con PHP ma uso la funzione PHP:

```
@$output = openssl_pkcs7_verify ($randomName . ".p7m-b6m" , PKCS7_NOVERIFY , null ,array('CA.pem'), 'CA.pem', $randomName . 'cleaned.xml');

```

La funzione mi funziona con tutte le fatture ma non con Enel. Qualcuno nel mio stesso problema?

---

<div class="post-metadata">

**Author:** ![itajackass](https://forum.italia.it/user_avatar/forum.italia.it/itajackass/32/2992_2.png) [@itajackass](https://forum.italia.it/u/itajackass)\
**Post date:** [14 Aprile 2020, 7:31am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/36 "2020-04-14T07:31:01Z")

</div>

> [@itajackass](#):
>
> openssl\_pkcs7\_verify

ciao per caso conosci un equivalente per puro php? attualmente uso

```auto
openssl_pkcs7_verify 

```

vedi risposta precedente, ma ahimè con fatture di Enel non mi va…

---

<div class="post-metadata">

**Author:** ![vbato](https://forum.italia.it/letter_avatar_proxy/v4/letter/v/3e96dc/32.png) [@vbato](https://forum.italia.it/u/vbato)\
**Post date:** [14 Aprile 2020, 9:59am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/37 "2020-04-14T09:59:48Z")

</div>

> [@itajackass](#):
>
> ciao per caso conosci un equivalente per puro php? attualmente uso

No, mi dispace. Non uso PHP e nemmeno OpenSSL. Ho solo fatto dei test con openssl a riga di comando e constatato che con `openssl cms` funziona, mentre con `openssl smime` no.  
Da quello che posso vedere PHP purtroppo non espone tutte le funzioni di OpenSSL. L’unica soluzione sembra essere quella di eseguire openssl con `exec`.  
Se proprio non puoi eseguire programmi esterni e non trovi una libreria già pronta, e tutto quello che ti interessa è estrarre il file xml (senza fare la verifica della firma), puoi provare a implementare da solo la procedura.  
E’ quello che abbiamo fatto noi. Non è semplicissimo, ma neanche impossibile. Vedi questo mio post:

> [@Decodifica Firma CADES - BES zucchetti](https://forum.italia.it/t/decodifica-firma-cades-bes-zucchetti/6262/5):
>
> Il formato CAdES, basato su CMS, basato su PKCS#7, basato su ASN.1 è un formato abbastanza complicato che offre parecchia flessibilità. In particolare non è detto che il file firmato sia in unico blocco. Escludendo i caratteri non stampabili (sequenze utf8 non valide) forse ottieni il file pulito, ma solo se hai la fortuna che i dati dei header che non fanno parte del file generino sequenze utf8 non valide o caratteri unicode sballati. Ho visto fatture elettroniche (in particolare quelle firmat…

---

<div class="post-metadata">

**Author:** ![Roberto67](https://forum.italia.it/user_avatar/forum.italia.it/roberto67/32/3846_2.png) [@Roberto67](https://forum.italia.it/u/Roberto67)\
**Post date:** [29 Maggio 2020, 10:40am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/38 "2020-05-29T10:40:47Z")

</div>

Salve a tutti,  
io ho ricevuto una fattura p7m, in formato cades (firma all’inizio e fine del file, caratteri “sballati” in mezzo all’xml, ma sostanzialmente si legge la p.iva). Il problema è che sia con dike, sia sul sito del notariato, sia usando openssl in tutte le forme (con -smime o -cms) dà sempre errore (_asn1 encoding routines:ASN1\_get\_object:header too long:asn1\_lib.c:157_). Inoltre io sviluppo in java e avrei bisogno di estrarre il file xml pulito in modo da poterlo parsare con librerie DOM. Conoscete qualche rimedio a questo problema? o l’unica speranza è un metodo euristico che “pulisce” il file per ottenere un xml ? Grazie per le eventuali risposte

---

<div class="post-metadata">

**Author:** ![vbato](https://forum.italia.it/letter_avatar_proxy/v4/letter/v/3e96dc/32.png) [@vbato](https://forum.italia.it/u/vbato)\
**Post date:** [5 Giugno 2020, 10:23am UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/39 "2020-06-05T10:23:22Z")

</div>

Che `openssl cms` abbia problemi potrebbe succedere, ma che nemmeno tool specifici come Dike riescano a leggerlo, è molto strano.  
Il file arriva dal SdI? Sei sicuro che non sia rovinato?  
Hai provato a riscaricarlo dal portale F&C?

Ottieni lo stesso errore anche se provi a fare il parsing dell’ASN1 con openssl?  
`openssl asn1parse -inform DER -i -in nomefile.p7m`

---

<div class="post-metadata">

**Author:** ![Francesco\_Alfeo](https://forum.italia.it/user_avatar/forum.italia.it/francesco_alfeo/32/5902_2.png) [@Francesco\_Alfeo](https://forum.italia.it/u/Francesco_Alfeo)\
**Post date:** [22 Gennaio 2021, 12:10pm UTC](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/40 "2021-01-22T12:10:42Z")

</div>

Avevo una errore simile ed il primo comando ha funzionato.  
Sconoscevo la possibilità che i file firmati in p7m potessero essere in base64. Ma, che voi sappiate, questo dipende dal client di firma o è un opzione data all’utente?

[Pagina precedente](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522.md?page=1)

[Pagina seguente](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522.md?page=3)
