为什么';t`OpenSSL::Pkey::RSA.new`JRuby中缺少密码的提示?

为什么';t`OpenSSL::Pkey::RSA.new`JRuby中缺少密码的提示?,ruby,openssl,rubygems,jruby,private-key,Ruby,Openssl,Rubygems,Jruby,Private Key,我试图找出是否有办法让JRuby提示输入丢失的密码(就像Ruby那样) 调用OpenSSL::PKey::RSA.new时,无需密码 例如,给定此脚本: # example.rb require 'openssl' def test pemkey_text, pemkey_pass puts "Decrypting key using password #{pemkey_pass.inspect}" begin key = OpenSSL::PKey::RSA.new pemk

我试图找出是否有办法让JRuby提示输入丢失的密码(就像Ruby那样) 调用
OpenSSL::PKey::RSA.new时,无需密码

例如,给定此脚本:

# example.rb
require 'openssl'

def test pemkey_text, pemkey_pass
  puts "Decrypting key using password #{pemkey_pass.inspect}"
  begin
    key = OpenSSL::PKey::RSA.new pemkey_text, pemkey_pass
    puts "success"
  rescue OpenSSL::PKey::RSAError => e
    puts %(failure: #{e.message}\n\t#{e.backtrace.join("\n\t")})
  end
end

pemkey_text = DATA.read
pemkey_pass = "correct horse battery staple"

test pemkey_text, pemkey_pass
test pemkey_text, nil

__END__
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,40D5A4CB36A82BF11E864AB17F4796BF

OfBi5HqB22AhV9pEtyf2/LIGt+80Dd53po8i+MXa2rBTSzHVDIqtECDjXogJjfYi
osuCQTTDddYtXL00LBYKxO94mERmfpYg94oiccBQRbSCkvYmxoY5Tw9ExllPcORR
M0BqvpVlGBZeHDSqrsHXM1ApREx8Iz9IaR3ZR0cX5DXHWlo3qEumKiafAcd5PdRJ
o7fFY6tt4zCzNZ63yK9lt6/M3KNeY9stPOwoHm3R548HQwIz+m6M5CVwy40XejEM
5O2LS5AUoib0GxFHOQJBDGf9wcq35ivyz4bhDzRYPBaoA6/SCACiW8e4jLkqhw4B
ye1f3ESBmpFEPRTwBVA+vnvYkfVLf0MlGWNY3J3zxJKC9TJUT3tkNY41gndh6761
i41ObaTIV+DlL4uNB7UDkS+8PjTQ+ndAbu3277yI+UCu8RbebpnWpmTDviTigH4z
zZSCrW1A0OLWwFr+sfKPo8QSkcA+H4fMX3IER7tl77I62idRO+jbZzauhj8lyiHO
LJt3AIOEjQ9YZm0GSLbWbZvu2fN9WP5BVrTcrKXAhjTTdQoNWgwVKVSbs6v0umvM
fOIUZ4I1VPBpdfd6Q0XL4LtvNf/nUh+o92Udmuguj/mOwrlh1Aujkfjy0U/jBbIw
ieXUC3CvWKkD9AzXwln7FbsFq6HdFZ6QUFc63WxzoEY6G6R0dK8U1zEy+cNbtlgD
IeXmldJ+hdbP32BOnBfKYAEWvCTJXjixvM25B5v4S5HqUW5CzATszMD+TvNuOpt0
Unca2Dl25FJnhAVE0TScfhMXLdaQv3cP1PRa4ylEL8dg3L8HsdYD6hgAlrHFRnKF
-----END RSA PRIVATE KEY-----
如果我使用MRI Ruby运行它,它会在第二次
测试期间提示输入密码:

% rvm use ruby-2.1
Using /usr/local/rvm/gems/ruby-2.1.5
% ruby example.rb
Decrypting key using password "correct horse battery staple"
success
Decrypting key using password nil
Enter PEM pass phrase:
success
但是,如果我使用JRuby运行它,第二个
测试将引发一个错误
提示用户输入密码的步骤:

% rvm use jruby
Using /usr/local/rvm/gems/jruby-1.7.16.1
% ruby example.rb
Decrypting key using password "correct horse battery staple"
success
Decrypting key using password nil
failure: Neither PUB key nor PRIV key:
        org/jruby/ext/openssl/PKeyRSA.java:281:in `initialize'
        example.rb:6:in `test'
        example.rb:17:in `(root)'
我想知道这是否是因为我安装的java/openssl/jruby/jruby\u openssl的某些组合,但没有 各种替代安装的排列已经成功,所以我开始怀疑 如果有办法让这一切顺利的话

如果你想知道为什么我不亲自提示输入密码,那是因为我正在尝试
要使用
rubygems
gem
命令,jruby openssl库是一个完全不同的实现(使用bouncy castle而不是openssl),因此我认为存在一些差异并不完全令人惊讶(尽管可能是无意的),这看起来非常类似。在那里,开发人员报告它应该与JRuby 1.7.18配合使用。如果没有,请在上打开一个问题。通常,最好测试JRuby(当前为1.7.19)和JRuby openssl(当前为0.9.6)的最新版本。Holger Just:是的,当使用JRuby openssl 0.9.6对JRuby-1.7.19和JRuby-1.7.18进行测试时,错误仍然存在。我要开始一个问题。