É verdade que você não pode obter PEM_bytes_read_bio
e PEM_do_header
, que é onde as decodificações PEM legadas acabam, para usar uma senha de tamanho zero, de qualquer forma.
Existe uma solução alternativa, mas você pode não gostar :
# assumes DES3 (aka DES-EDE3) CBC as in the example
# changes and/or additional logic needed for other ciphers
# get the IV from the file header
iv='awk <silly -F, '/DEK-Info:/{print $2}''
# use enc to do EVP_BytesToKey with salt=IV and just print result
key='openssl enc -des3 -k '' -S $iv -P |awk -F= '/^key/{print $2}''
# get body of the file, debase64 and decrypt
# note openssl silently drops dash-END line, another debase64 may not
<silly sed '1,/^$/d' |openssl base64 -d |openssl enc -des3 -d -K $key -iv $iv >sillyd
# sillyd is now unencrypted DER "legacy" (PKCS#1)
# and can be read by "openssl rsa <sillyd -inform der"
# but since we're on a roll let's do PEM too!
(echo -----BEGIN RSA PRIVATE KEY-----;openssl base64 <sillyd;\
echo -----END RSA PRIVATE KEY-----) >sillyp
Minha sugestão: da próxima vez, não use uma frase secreta vazia: -)