2012-06-22 3 views
2

Таким образом, у меня есть это приложение, которое создает почтовый файл с изображениями и прочееOpenSSL SMIME в рубин/рельсы

и я хочу, чтобы подписать его с помощью smime.

если я использовать терминал команды:

openssl smime -binary -sign -passin "pass:MYPASS" -signer ./MyCertificate.pem -inkey ./MyKey.pem -in ./manifest.in -out ./signature.out -outform DER 

отформатированные:

openssl smime -binary -sign -passin "pass:MYPASS"    \ 
     -signer ./MyCertificate.pem -inkey ./MyKey.pem  \ 
     -in ./manifest.in -out ./signature.out -outform DER 

manifest.in является файл ведьма содержит текст, который должен быть подписана и signature.out является выходным файлом.

я не знаю много о подписании, но я считаю, что это код подписывает мой файл, используя pkcs7

как я могу воссоздать тот же результат с рубином/рельсами?

я попытался посмотреть в документации OpenSSL, но я не мог найти что-нибудь полезную для меня

EDIT

, если это поможет кому-то, это то, что сказано в документации

Мне нужно построить:

A detached PKCS#7 signature of the manifest 
+0

Вы когда-нибудь смотрели https://github.com/medined/smime? Также вы можете выложить эту команду, если хотите. –

+0

Я видел эту библиотеку, но помощь вызвала больше вопросов, чем на самом деле ... –

ответ

3

Найдено 0 путь.

так:

require 'secure_digest' 

    def sign_manifest(manifest = {}) 
    manifest_str = manifest.to_json 

    key4_pem = File.read Rails.root.join("lib", "keys", "key.pem") 
    pass_phrase = "supera" 

    key = OpenSSL::PKey::RSA.new key4_pem, pass_phrase 
    cert = OpenSSL::X509::Certificate.new File.read Rails.root.join("lib", "keys", "certificate.pem") 

    sign = OpenSSL::PKCS7.sign(cert, key, manifest_str, nil, OpenSSL::PKCS7::BINARY | OpenSSL::PKCS7::NOATTR | OpenSSL::PKCS7::DETACHED).to_der 

    sign 
    end 

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

+0

Вы просто спасли мне столько времени, спасибо! – samvermette

Смежные вопросы