我正在尝试使用PHP库中内置的OpenSSL来获取p7m签名文件(XML文件,尤其是那里的意大利人的fattura elettronica)的内容。我不需要检查签名/证书,仅需要内容。
我正在尝试使用openssl_pkcs7_verify()将其“翻译”:
UnhandledPromiseRejection
这是这样做的PHP行:
each
问题是$ result为-1,openssl_error_string()给了我这个错误:
$('.anchor').each((index, obj) => {
var currentElementTop = $(obj).offset().top;
var hash = $(obj).attr('id');
if (currentElementTop < currentTop && currentTop < currentElementTop + $(obj).height() && currentHash!=hash){
if(history.pushState) {
history.pushState(null, null, '#'+hash);
} else {
location.hash = '#'+hash;
}
currentHash = hash
}
});
不,我不能使用exec()或shell_exec()等。
我看到OpenSSL PHP库需要S / MIME而不是DER,所以我发现此函数将文件获取为S / MIME:
openssl smime -verify -noverify -in file.xml.p7m -inform DER -out file.xml
但是在使用openssl之前使用它是行不通的。
我该如何解决?预先感谢!
答案 0 :(得分:1)
好的,我已经这样解决了:
首先,我必须使用
openssl_pkcs7_verify($input, PKCS7_NOVERIFY | PKCS7_NOSIGS, $signer);
它将提取证书并将其保存在$ signer中。
那我用过
openssl_pkcs7_verify($input, PKCS7_NOVERIFY | PKCS7_NOSIGS, $signer, [], $signer, $output);
使用签名者的证书从$ output中的签名文件中提取内容。
当然,我仍然需要使用该函数(der2smime())将输入从DER转换为SMIME。
希望对您有帮助!