openssl dgst -sign
com -keyform der
(não -inform
) aceita apenas a chave privada. No entanto, esse comando pode aceitar todos os 4 formatos PEM para privatekey: legacy clear ou criptografado e pkcs8 clear ou criptografado. Para uma chave criptografada você precisa fornecer a senha quando ela é usada, é claro; Presumo que o seu "sem decifrar antecipadamente" não é para excluir isso.
Operações da linha de comando pkcs8 rsa pkey
irá converter uma chave privada criptografada do DER para o PEM apenas decriptografando e re-criptografando (ambos exigindo a senha), mas você pode fazer isso diretamente por algo como:
printf '%s\n' "-----BEGIN ENCRYPTED PRIVATE KEY-----" >tempkey.pem
openssl base64 <pk8derfile >>tempkey.pem
printf '%s\n' "-----END ENCRYPTED PRIVATE KEY-----" >>tempkey.pem
# variants with sed, awk, perl, etc are possible if better for you
# and of course change filename(s) if you like
openssl dgst -sha256 -sign tempkey.pem <data -out signature
No Unix em alguns shells (notavelmente bash) você pode fazer isso de uma vez por
openssl dgst -sha256 -sign <(printf ... base64 ... printf ...) ...
Não sei se você conta isso como um único comando ou não.