Подпись PKCS#7 в PHP с использованием PKCS#11 без вызова CLI

Есть ли способ создать подпись PKCS#7 (S/MIME) с устройством HSM (считывателем карт), совместимым с PKCS#11, используя чистый PHP, то есть без явного вызова команды оболочки, например, используя библиотеку PHP OpenSSL или какой-либо другой клей?

Я могу успешно создать подпись PKCS # 7 с помощью CLI openssl с движком PKCS#11 вот так:

putenv('PIN='.$secret_card_pin);
shell_exec("export PIN; OPENSSL_CONF=openssl.cnf openssl smime -sign -engine pkcs11 -md sha1 -binary -in {$tmpFileIn} -out {$tmpFileOut} -outform der -keyform engine -inkey id_ed0007 -signer pubcert.pem");

Я хочу очистить это, но это кажется невозможным, используя чистый PHP, потому что, насколько я могу судить, функцию openssl_pkcs7_sign() можно использовать только с файлом закрытого ключа без какой-либо поддержки pkcs11-engine предоставленные ключи. Я что-то пропустил?

1 ответ

Решение

Нет, в то время как для многих языков есть привязки PKCS#11, для PHP нет ни одной.

Вам понадобится это, тогда вы сможете создать PKCS#7 и подписать его с помощью этой библиотеки.

К сожалению, отсутствует, что вам нужно будет использовать CLI.

Другие вопросы по тегам