【发布时间】:2011-01-20 23:27:17
【问题描述】:
我正在尝试通过 popen3 发送二进制数据,但出现错误。
我发出的 shell 命令是:
key = File.open('path.key').read
Open3.popen3("openssl pkcs8 -inform DER -outform PEM -passin pass:#{password}") do |stdin, stdout, stderr|
stdin.print(key)
unless (err = stderr.read).empty? then raise err end
stdout.read
end
其中 key 是一个二进制文件。 OpenSSL 说密钥无效,我在摸不着头脑。
现在,如果我通过让 OpenSSL 直接从文件系统读取命令而不是通过标准输入传递命令来发出命令,它可以正常工作
"openssl pkcs8 -in path.key -inform DER -outform PEM -passin pass:#{password}"
是否存在我不知道的编码问题?或者这根本不可能。由于我将通过 web 服务接收密钥文件,因此我宁愿不必将它们保存到磁盘并让 openssl 读取它们,而是在内存中完成整个过程。
感谢您的宝贵时间
【问题讨论】:
标签: ruby