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.