Расшифровывая входящее письмо на Python, у меня есть вложение "smime.p7s".Если я запишу это в файл, то его можно извлечь и просмотреть, используя
openssl pkcs7 -inform der -print_certs <smime.p7s
Я хотел бы сделать это в Python.Здесь есть пример здесь обратного процесса, т.е. как подписать письмо.
При просмотре документации OpenSSL API есть записьточка PKCS7_get0_signers
, которая, кажется, делает это.
Вот фрагмент кода, который я пробую, основанный на наивной переработке кода подписи.
with open(fname, 'wb') as p7sfile:
p7sfile.write(sig)
pkcs7 = crypto._lib.PKCS7_get0_signers(sig, None, 0)
Это не работает -
pkcs7 = crypto._lib.PKCS7_get0_signers(sig, None, 0)
TypeError: initializer for ctype 'PKCS7 *' must be a cdata pointer, not bytes
Кажется, что функция требует трех параметров, хотя, возможно, флаги необязательны?
Эта строка кода (из более старой библиотеки M2Crypto) также предполагает, чтоточке входа нужны три параметра.
Я не понимаю, зачем ей нужен «certs.stack» в качестве входного параметра, когда мы пытаемся извлечь сертификаты, а я неЯ не уверен, что нужно помещать в «флаги».
Я почти уверен, что мне нужны специальные буферизованные объявления для настройки вызова, а также для получения результатов (например, преамбула bio_in = crypto._new_mem_buf(data)
в 1 ).Может кто-нибудь подсказать, как это сделать?
Также - библиотека M2Crypto
не совместима с Python 3.x, поэтому ищет альтернативу.