У меня есть файл с подписью DER, и я хочу извлечь его содержимое, сняв подпись …
Функция php openssl_pkcs7_verify работает только с файлами, подписанными PEM, это первое, что я обнаружил. Итак, я закодировал в base64 содержимое, сохранил его в файл и попытался снова развернуть.
Ничего, я все еще получаю эти ошибки:
ошибка: 02001000: системная библиотека: fopen: системная библиотека
ошибка: 2006D002: подпрограммы BIO: BIO_new_file: системная библиотека
Это выдержка из моего кода:
$nomeFileEstratto = substr($nomeFileP7M,0,-4);
$nomeTemporaneoP7M = $_SERVER['DOCUMENT_ROOT'].'/temp/'.basename($nomeFileP7M);
$nomeTemporaneoEstratto = $_SERVER['DOCUMENT_ROOT'].'/temp/'.basename($nomeFileEstratto);
//Salvo il file p7m nella cartella temporanea
file_put_contents($nomeTemporaneoP7M,$this->der2pem($contenutoFileP7M));
//Estrazione dei dati
//exec('openssl smime -decript -in \''.$nomeTemporaneoP7M.'\' -inform DER -verify -noverify -out \''.$nomeTemporaneoEstratto.'\'');
openssl_pkcs7_verify($nomeTemporaneoP7M, PKCS7_NOVERIFY, null, array(), null, $nomeTemporaneoEstratto);
Обратите внимание, что я не могу использовать системный вызов.
Я также попал в ANS1PHP и PHPSECLIB, но я не думаю, как использовать их для своих целей.
Задача ещё не решена.
Других решений пока нет …