pki: Rewrite default key format handling to improve readability

... and make coerity happy avoiding dead code

CID 1531320
CID 1531321

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Norbert Pocs <norbertpocs0@gmail.com>
This commit is contained in:
Jakub Jelen
2023-12-20 09:58:21 +01:00
parent 283d75802d
commit 24dfc59264

View File

@@ -874,28 +874,26 @@ ssh_pki_export_privkey_base64_format(const ssh_key privkey,
return SSH_ERROR; return SSH_ERROR;
} }
/* The PEM export is supported only with OpenSSL. We fall back to /*
* OpenSSH key format elsewhere */ * For historic reasons, the Ed25519 keys are exported in OpenSSH file
if (format == SSH_FILE_FORMAT_DEFAULT) { * format by default also when built with OpenSSL.
*/
#ifdef HAVE_LIBCRYPTO #ifdef HAVE_LIBCRYPTO
if (privkey->type != SSH_KEYTYPE_ED25519) { if (format == SSH_FILE_FORMAT_DEFAULT &&
format = SSH_FILE_FORMAT_PEM; privkey->type != SSH_KEYTYPE_ED25519) {
} else { format = SSH_FILE_FORMAT_PEM;
#else
if (1) {
#endif /* HAVE_LIBCRYPTO */
format = SSH_FILE_FORMAT_OPENSSH;
}
} }
#endif /* HAVE_LIBCRYPTO */
switch (format) { switch (format) {
case SSH_FILE_FORMAT_DEFAULT:
case SSH_FILE_FORMAT_PEM: case SSH_FILE_FORMAT_PEM:
blob = pki_private_key_to_pem(privkey, blob = pki_private_key_to_pem(privkey,
passphrase, passphrase,
auth_fn, auth_fn,
auth_data); auth_data);
break; break;
case SSH_FILE_FORMAT_DEFAULT:
/* default except (OpenSSL && !ED25519) handled above */
case SSH_FILE_FORMAT_OPENSSH: case SSH_FILE_FORMAT_OPENSSH:
blob = ssh_pki_openssh_privkey_export(privkey, blob = ssh_pki_openssh_privkey_export(privkey,
passphrase, passphrase,
@@ -1103,28 +1101,26 @@ ssh_pki_export_privkey_file_format(const ssh_key privkey,
return SSH_EOF; return SSH_EOF;
} }
/* The PEM export is supported only with OpenSSL. We fall back to /*
* OpenSSH key format elsewhere */ * For historic reasons, the Ed25519 keys are exported in OpenSSH file
if (format == SSH_FILE_FORMAT_DEFAULT) { * format by default also when built with OpenSSL.
*/
#ifdef HAVE_LIBCRYPTO #ifdef HAVE_LIBCRYPTO
if (privkey->type != SSH_KEYTYPE_ED25519) { if (format == SSH_FILE_FORMAT_DEFAULT &&
format = SSH_FILE_FORMAT_PEM; privkey->type != SSH_KEYTYPE_ED25519) {
} else { format = SSH_FILE_FORMAT_PEM;
#else
if (1) {
#endif /* HAVE_LIBCRYPTO */
format = SSH_FILE_FORMAT_OPENSSH;
}
} }
#endif /* HAVE_LIBCRYPTO */
switch (format) { switch (format) {
case SSH_FILE_FORMAT_DEFAULT:
case SSH_FILE_FORMAT_PEM: case SSH_FILE_FORMAT_PEM:
blob = pki_private_key_to_pem(privkey, blob = pki_private_key_to_pem(privkey,
passphrase, passphrase,
auth_fn, auth_fn,
auth_data); auth_data);
break; break;
case SSH_FILE_FORMAT_DEFAULT:
/* default except (OpenSSL && !ED25519) handled above */
case SSH_FILE_FORMAT_OPENSSH: case SSH_FILE_FORMAT_OPENSSH:
blob = ssh_pki_openssh_privkey_export(privkey, blob = ssh_pki_openssh_privkey_export(privkey,
passphrase, passphrase,