Как декодировать / извлечь содержимое файла smime.p7m электронной почты со знаком SMIME с использованием библиотеки Ruby OpenSSL - PullRequest
3 голосов
/ 07 сентября 2011

У меня есть подписанное сообщение электронной почты в виде строки.И я хочу получить строку с целым неподписанным сообщением с вложениями и телом, которое я могу проанализировать, например, Mail gem.

Я нашел вопрос: Декодировать / извлечь содержимое файла smime.p7mвстроенные файлы) с OpenSSL? и теперь я знаю, как это сделать через командную строку.

Я могу вывести свою строку во временный файл, расшифровать через командную строку и затем проанализировать ее.Но это не очень хорошая идея.Я хочу использовать библиотеку OpenSSL для Ruby.

1 Ответ

0 голосов
/ 24 августа 2018

Я думал, что напишу решение, потому что мне потребовалось довольно много времени, чтобы понять это. Также смотрите мой комментарий выше о том, откуда это было взято:

include OpenSSL

# assuming that mail contains the message that you have likely fetched with the mail gem
data = mail.to_s

# load your certificate and key
# if you need to convert from a .p12 file for example 
# check this https://stackoverflow.com/questions/13732826/convert-pem-to-crt-and-key
cert = X509::Certificate.new(File::read("your_cert.cer"))
key = PKey::RSA.new(File::read("your.key"))

# load the encrypted mail
p7enc = PKCS7::read_smime(data)

# this is the plain email that you can read back into the mail gem and extract the required data
Mail.read_from_string(p7enc.decrypt(key, cert))
...