# Estrazione xml da file p7m

**URL:** <https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032>\
**Category:** Fatturazione Elettronica\
**Created:** [11 Febbraio 2019, 4:18pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032 "2019-02-11T16:18:14Z")\
**Posts on this page:** 17\
**Page:** 1

<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:** [11 Febbraio 2019, 4:18pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/1 "2019-02-11T16:18:15Z")

</div>

Buonasera a tutti,  
magari qualcuno di voi usa openSSL per estrarre la fattura xml da un file firmato dall’emittente della fattura (non il file enc dell’SdI ma proprio la fattura firmata) e mi può aiutare.  
Ho creato il software che cerca di estrarre il suddetto xml utilizzando questo comando openSSL:  
smime -decrypt -verify -in e:\ITxxxxxxxxxxxx.p7m -inform der -binary -out e:\ITxxxxxxxxxxxxxxx.xml -noverify"

Il problema è che spesso fallisce dandomi un errore che allego  
 ![errore%20SMIME1](https://forum.italia.it/uploads/default/original/2X/8/8a876d2a5e0b0b55bb44486c1e8c88571ed3845c.png)  
A completezza dell’informazione aggiungo che si apre normalmente con il dike 6 (e non mi sembrano file strani).

Qualche idea che possa aiutarmi?  
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:** [11 Febbraio 2019, 4:32pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/2 "2019-02-11T16:32:57Z")

</div>

Probabilmente il file è codificato in base64. In questo caso devi prima fare la decodifica base64 e poi l’estrazione dal p7m come sopra.  
Puoi fare anche la decodifica base64 con openssl. Vedi questo mio post:

> [@P7m codificato](https://forum.italia.it/t/p7m-codificato/6470/26):
>
> Sì, se il file è codificato con base64, prima di poter usare openssl per estrarre il file xml dal file .p7m, devi fare la decodifica base64. Hai sviluppato un tuo software per gestire le fatture o le stai elaborando “a mano”? Nel primo caso, il linguaggio di programmazione che usi avrà sicuramente una funzione per la decodifica base64 nelle librerie standard. Nel secondo caso, ci sono un infinità di tool per farlo. Sotto Linux c’è il comando base64: base64 -d fattura\_codificata\_base64.xml.p…

---

<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:** [11 Febbraio 2019, 4:39pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/3 "2019-02-11T16:39:42Z")

</div>

> [@vbato](#):
>
> ecodifica base64 con openssl. Vedi questo mio post:

Ottimo suggerimento. Sviluppo in c# e la fatturazione elettronica ormai mi ha abituato a decodificare in base64 (gli attachment) 🙂

Grazie mille, faccio subito una prova

---

<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:** [11 Febbraio 2019, 4:50pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/4 "2019-02-11T16:50:52Z")

</div>

Ho visto nell’altro thread che usi C#. Puoi fare tutto in .NET senza altre librerie. Per estrarre il contenuto del .p7m (dopo aver decodificato l’eventuale base64) puoi usare la seguente funzione:

```
    private byte[] EstraiFileDaP7M(byte[] signedData)
    {
        SignedCms cms = new SignedCms();
        cms.Decode(signedData);

        if (cms.Detached) {
            throw new InvalidOperationException("Cannot extract enveloped content from a detached signature.");
        }

        return cms.ContentInfo.Content;
    }

```

La classe `SignedCms` sta in `System.Security.Cryptography.Pkcs`.

---

<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:** [11 Febbraio 2019, 5:07pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/5 "2019-02-11T17:07:26Z")

</div>

hmmm vado a memoria ma mi sa che è disponibile solo dal framework 4.7.2 ed io sono su un software sviluppato sulla 4.5.2

---

<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:** [11 Febbraio 2019, 5:20pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/6 "2019-02-11T17:20:00Z")

</div>

Io l’ho testato su .NET 4.7, ma stando alla documentazione, dovrebbe essere disponibile su tutte le versioni.

---

<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:** [11 Febbraio 2019, 5:50pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/7 "2019-02-11T17:50:23Z")

</div>

Confermo, addirittura dalla versione 2.0 del .NET.  
Chilkat ha invece parecchi vantaggio nella parte di firma dato che produce sia xades che pades che cades.

---

<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:** [12 Febbraio 2019, 4:44pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/8 "2019-02-12T16:44:14Z")

</div>

hmmm allora ricordavo male. Devo provare.  
Grazie

---

<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:** [13 Febbraio 2019, 8:25am UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/9 "2019-02-13T08:25:39Z")

</div>

E ti ringrazio tantissimo! Grazie al suggerimento della codifica in base64 e a questo pezzo di codice ho risolto il problema (ed in più ho eliminato la dipendenza ad openSSL che, per quanto ottimo, è sempre un elemento esterno).

---

<div class="post-metadata">

**Author:** ![AleMaca](https://forum.italia.it/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@AleMaca](https://forum.italia.it/u/AleMaca)\
**Post date:** [24 Aprile 2019, 2:53pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/10 "2019-04-24T14:53:49Z")

</div>

Salve ragazzi,  
Oggi una fattura firmata mi ha dato il seguente errore “Dati ASN1 Danneggiati”, Cosa vuol dire?

---

<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:** [24 Aprile 2019, 3:20pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/11 "2019-04-24T15:20:56Z")

</div>

> [@AleMaca](#):
>
> Oggi una fattura firmata mi ha dato il seguente errore “Dati ASN1 Danneggiati”, Cosa vuol dire?

Chi o cosa ti ha dato quell’errore?  
ASN1 è il formato (binario) dei file .p7m (CAdES-BES), quindi il messaggio indica che c’è qualcosa che non va col file. Potrebbe essere il caso già discusso di file .p7m codificato in base64, mentre la procedura a cui l’hai dato in pasto si aspetta un file binario. Oppure il file è veramente rovinato.

---

<div class="post-metadata">

**Author:** ![AleMaca](https://forum.italia.it/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@AleMaca](https://forum.italia.it/u/AleMaca)\
**Post date:** [25 Aprile 2019, 7:36pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/12 "2019-04-25T19:36:29Z")

</div>

L’errore me l’ha dato la funzione Decode di SignedCms.  
Credo che sbaglio qualcosa, mi puoi dire dove:  
Leggo il file p7m, lo converto in byte e lo passo alla funzione che hai pubblicato EstraiFileDaP7m.  
Da quello che ho capito dovrei decodificare in base64, grazie in anticipo.

---

<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:** [26 Aprile 2019, 11:35am UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/13 "2019-04-26T11:35:52Z")

</div>

se carichi il file o lo metti a disposizione su google drive vediamo se ti possiamo dare una mano a capire l’errore.

---

<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:** [29 Aprile 2019, 9:24am UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/14 "2019-04-29T09:24:49Z")

</div>

> [@AleMaca](#):
>
> Da quello che ho capito dovrei decodificare in base64

Hai controllato se il file codificato in base64? Se lo è, devi decodificarlo prima di passarlo alla funzione EstraiFileDaP7m, altrimenti no.

---

<div class="post-metadata">

**Author:** ![marcomarsala](https://forum.italia.it/user_avatar/forum.italia.it/marcomarsala/32/1486_2.png) [@marcomarsala](https://forum.italia.it/u/marcomarsala)\
**Post date:** [21 Gennaio 2020, 8:45pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/15 "2020-01-21T20:45:41Z")

</div>

Noi abbiamo sviluppato uno script che scarica le fatture presenti nel Cassetto Fiscale e può automaticamente sbustarle (estrarre xml da p7m) tramite openssl

---

<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:** [23 Gennaio 2020, 10:46am UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/16 "2020-01-23T10:46:43Z")

</div>

hmmm le scarica dal Cassetto Fiscale in che modo, se posso chiederlo? Perchè non esistendo API o altro l’unica è procedere simulando un accesso “fisico” dell’utente, giusto?

---

<div class="post-metadata">

**Author:** ![marcomarsala](https://forum.italia.it/user_avatar/forum.italia.it/marcomarsala/32/1486_2.png) [@marcomarsala](https://forum.italia.it/u/marcomarsala)\
**Post date:** [19 Marzo 2020, 7:17pm UTC](https://forum.italia.it/t/estrazione-xml-da-file-p7m/8032/17 "2020-03-19T19:17:03Z")

</div>

Esatto, lo script openasource che forniamo, espone tramite API REST l’accesso ai dati presenti nel proprio Cassetto Fiscale.
