Я пытаюсь использовать встроенную в PHP библиотеку OpenSSL для получения содержимого файла с подписью p7m (файла XML, в частности, fattura elettronica для итальянцев).Мне не нужно проверять знак / сертификат, мне нужен только контент.
Я пытаюсь "перевести" это с помощью openssl_pkcs7_verify ():
openssl smime -verify -noverify -in file.xml.p7m -inform DER -out file.xml
Это строка PHP, которая делает это:
$result = openssl_pkcs7_verify('file.xml.p7m', PKCS7_NOVERIFY, 'file.xml');
Проблема в том,что $ result равен -1, и openssl_error_string () выдает мне эту ошибку:
error:0B065068:x509 certificate routines:BY_FILE_CTRL:loading defaults
И нет, я не могу использовать exec (), shell_exec () и т. д.
Я видел эту PHP-библиотеку OpenSSLнужен S / MIME, а не DER, поэтому я нашел эту функцию, чтобы получить файл как S / MIME:
function der2smime($file) {
$to=<<<TXT
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=signed-data;name="smime.p7m"
Content-Transfer-Encoding: base64
\n
TXT;
$from=file_get_contents($file);
$to.=chunk_split(base64_encode($from));
return file_put_contents($file,$to);
}
Но он не работает ни с помощью этого перед использованием openssl.
Как я могу исправитьтот?Заранее спасибо!