mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 18:50:28 +09:00
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:
44
src/pki.c
44
src/pki.c
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user