Problema Ricezione Fatture con firma p7m

Buon giorno,
Ho realizzato da qualche anno un applicativo un PHP per la ricezione delle fatture su canale SID Coop.
Tutto funziona tranne per la ricezione di alcune fatture.
Mi spiego meglio. Alcune fatture che hanno la firma digitale mi arrivano con firma file corrotto, ovvero riesco a aprire il file e visualizzare il contenuto della fattura, ma se vado a verificare la firma con Dike mi dice che il file non contiene firma e marche (quindi come se fosse corrotto). Se lo stesso file vado a scaricarlo direttamente dall’agenzia delle entrate invece la firma risulta valida.

utilizzo come classe use Taocomp\Einvoicing\SdicoopServer\FileSdI;
e l’unica cosa operazione che faccio è la seguente

    public function RiceviFatture( \StdClass $parametersIn )
    {
        // SOAP request
        $request = new Taocomp\Einvoicing\SdicoopServer\FileSdIConMetadati($parametersIn);
        //WebService::log(__FUNCTION__ . " $request");


        $tmp_folder = $this->createTempFolder();
        file_put_contents($tmp_folder."/{$request->NomeFile}", $request->File);
        file_put_contents($tmp_folder."/{$request->NomeFileMetadati}", $request->Metadati);

        // SOAP response
        return new Taocomp\Einvoicing\SdicoopServer\RispostaRiceviFatture(Taocomp\Einvoicing\SdicoopServer\RispostaRiceviFatture::ER01);
    }

Vi è mai capitato questo problema? e nel caso come avete risolto?
Grazie

Le fatture in questione usano firme CAdES o XAdES (ovvero sono file .p7m, oppure la firma è contenuta nell’XML)?
Ti faccio una domanda banale: hai provato a confrontare i due file (quello ricevuto da te e quello scaricato dall’AdE)? Che differenza c’è?
Ultima considerazione: non so come funziona la libreria che usi, ma alcune fattura arrivano codificate in base64 e altre no, quindi, se la libreria non fa la conversione, il file salvato potrebbe essere codificato in base64 e magari è questo che causa il problema.

Allora, prendendo il file che mi da problemi presenta la firma CADES-B.
Si, ho fatto una verifica dei due file aprendoli con un editor binario.
la differenza fra il primo è il secondo te l’allego nell’immagine sotto


Non vengono messi i caratteri sottolineati nel file sotto. quella è l’unica differenza (nel file di esempio).
La differenza dei 2 file non mi sembra dovuto da una codifica in base64…

Buon giorno a tutti.
sono riuscito a risolvere il problema.
Posto qui la soluzione.
Per chi utilizza Taocomp\Einvoicing\SdicoopServer in PHP ho riscontrato questo segue.
Da come si vede dall’immagine sopra riportata il sistema quando riceve una fattura elimina EF BB BF, ovvero UTF-8 BOM (Il Byte Order Mark (BOM) è una piccola sequenza di byte che viene posizionata all’inizio di un flusso di dati di puro testo, tipicamente un file, per indicarne il tipo di codifica Unicode).

Da come riportato in questa discussione era stata implementata una funziona dedicata che rimuove tale sequenza.

Mi è bastato editare nella class Taocomp\Einvoicing\SdicoopServer\FileSdIBase la funzione removeBOM che rimuove tale sequenza anche per le fatture in ingresso.