Buongiorno
stiamo verificando un problema in estrazione di fattura da XML non codificato BASE64, file che con DIKE si estrae 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
Ciao
Io ho lo stesso problema con le ultime fatture emesse in novembre da E-DISTRIBUZIONE
Quelle più vecchie non avevano nessun problema
Per ora ho risolto “a mano” togliendo tutto ciò che sta prima a
<p:FatturaElettronica> e tutto ciò che sta dopo a
</p:FatturaElettronica>
e salvando il file con estensione XML
Non vedo quali altri applicativi possa usare in ambiente linux.
Onestamente non capisco perchè alcune fatture non vengano decodificate correttamente usando cms (che dovrebbe decodificare anche le s/mime in accordo alla documentazione)
Non ho ancora approfondito dato che in questo periodo non ho troppo tempo per farlo e ci ho messo una pezza a quel modo.
Mi viene da pensare che almeno nella versione 1.1.1 che sto usando io (ubuntu 18.04.4 lts) openssl abbia qualche difetto.
Attualmente non esiste l’equivalente del comando cms in php.
PHP espone un subset delle funzioni openssl.
L’unica alternativa in questi casi è utilizzare l’exec. Ma se sul tuo server l’exec non è consentito puoi provare a scrivere un po’ di codice per estrarre i chuck dell’xml dalla busta p7m (se hai c…o è un’unico chunk)
Ho preso un file che fallisce la decodifica con cms (errore signature invalid)
Con openssl 1.1.x cms da errore
con openssl 1.0.2u cms decodifica correttamente.
Controlli più stringenti sulla validità del formato binario della firma fanno si che le più recenti versioni di openssl falliscano.
Sembra, facendo un parsing dell’asn1, che ci sia un byte in più del dovuto nella sezione della firma.
Quindi delle due l’una: o mi compilo una versione locale di openssl 1.0.2h solo per la decodifica lasciando quella di sistema per tutto il resto https etc etc, o faccio i due passaggi…
Temo anche che qualsiasi libreria python linkata a openssl 1.1.x soffra dello stesso problema…
Edit: il controllo sembra stato introdotto in openssl 1.1.0c con questo commit su github dato che con openssl 1.1.0b funzionava ancora
Il che vuol dire che in giro c’è chi firma fuori dagli standard…
Concordo, la mia procedura con gli xml.p7m per esteso fa i seguenti tentativi:
1)openssl smime
2)openssl cms
3)base -d e se ha successo di nuovo la sequenza
3.1)openssl smime
3.2)openssl cms
Forse non è efficiente ma per ora mi ha sempre funzionato…