Я пытаюсь отправить двоичные данные через popen3, но получаю сообщение об ошибке.
Команда оболочки, которую я выдаю:
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
где ключ - это двоичный файл. OpenSSL говорит, что ключ недействителен, и я чешу голову.
Теперь, если я выполню команду, когда OpenSSL прочитает ее непосредственно из файловой системы, вместо того, чтобы передавать ее через стандартный ввод, она будет работать правильно
"openssl pkcs8 -in path.key -inform DER -outform PEM -passin pass:#{password}"
Есть ли проблема с кодировкой, о которой я не знаю? Или это просто невозможно. Поскольку я буду получать файлы ключей через веб-сервис, я бы предпочел не сохранять их на диск и не читать их openssl, а вместо этого выполнять весь процесс в памяти.
Спасибо, что уделили время