JRuby ошибка загрузки закрытого ключа с помощью jruby-openssl в bouncycastle

Я пытаюсь подписать письма, отправленные моей заявкой, с сертификатом s/mime. Приложение использует JRuby 1.7.26 и новейшую версию гема jruby-openssl. (Версия 0.9.19). Когда я пытаюсь загрузить свой закрытый ключ, как это:

key_file = File.read(Rails.root.join('config', 'domain.key'))
private_key = OpenSSL::PKey::RSA.new(key_file)

Я получаю эту ошибку:

Java::JavaLang::NoSuchMethodError: org.bouncycastle.util.encoders.Base64.encode([BII)[B
from org.jruby.ext.openssl.x509store.PEMInputOutput.writeEncoded(PEMInputOutput.java:1496)
...

Если это работает, я хотел бы подписать электронные письма, как это:

data = "Test"
OpenSSL::PKCS7.write_smime(OpenSSL::PKCS7.sign(certificate, private_key, data, [], OpenSSL::PKCS7::DETACHED))

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

Спасибо заранее за любую помощь.

1 ответ

Вероятно, означает, что путаница в class-path -> BC .jars загружена откуда-то еще.

Упакованный BC JRuby-OpenSSL (в 0.9.19 это 1.55) имеет необходимый Base64 Метод - в противном случае не удалось бы скомпилировать биты расширения Ruby.

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