Я пытаюсь написать скрипт команды OpenSSL ec
. Сценарий используется для проверки набора ключей, созданных другой библиотекой. Сценарий показан ниже после вопроса.
Следующее работает из терминала:
openssl ec -in ec-enc-priv-xxx.pem -passin pass:test -text -noout
Следующее работает из терминала:
openssl ec -in ec-enc-priv-xxx.pem -passin pass:test -text -noout >/dev/null
Тем не менее, когда я пишу последний скрипт, мне предлагается ввести пароль:
$ ./pem-verify.sh
read RSA key
read RSA key
read RSA key
read DSA key
read DSA key
read DSA key
read EC key
read EC key
Enter PEM pass phrase:
Тот же код работает для ключей RSA и DSA в сценарии. Проблема только с зашифрованным секретным ключом EC.
Есть идеи, как обойти это?
#! /bin/sh
# Script to verify the test keys written by pem-test.cpp
#################
# RSA keys
# The RSA command returns 0 on success
openssl rsa -in rsa-pub-xxx.pem -pubin -text -noout >/dev/null
RET=$?
if [ $RET -ne 0 ];then
echo "Failed to read RSA public key"
fi
openssl rsa -in rsa-priv-xxx.pem -text -noout >/dev/null
RET=$?
if [ $RET -ne 0 ];then
echo "Failed to read RSA private key"
fi
openssl rsa -in rsa-enc-priv-xxx.pem -passin pass:test -text -noout >/dev/null
RET=$?
if [ $RET -ne 0 ];then
echo "Failed to read encrypted RSA private key"
fi
#################
# DSA keys
# The DSA command is broken. It returns 1 when using '-noout' option
# instead of 0. A patch was submitted to RT.
openssl dsa -in dsa-pub-xxx.pem -pubin -text -noout >/dev/null
openssl dsa -in dsa-priv-xxx.pem -text -noout >/dev/null
openssl dsa -in dsa-enc-priv-xxx.pem -passin pass:test -text -noout >/dev/null
#################
# EC keys
# The EC command returns 0 on success
openssl ec -in ec-pub-xxx.pem -pubin -text -noout >/dev/null
RET=$?
if [ $RET -ne 0 ];then
echo "Failed to read EC public key"
fi
openssl ec -in ec-priv-xxx.pem -text -noout >/dev/null
RET=$?
if [ $RET -ne 0 ];then
echo "Failed to read EC private key"
fi
openssl ec -in ec-enc-priv-xxx.pem -passin pass:test -text -noout >/dev/null
RET=$?
if [ $RET -ne 0 ];then
echo "Failed to read encrypted EC private key"
fi