diff --git a/src/pki.c b/src/pki.c index 62d7de41..2a94ade9 100644 --- a/src/pki.c +++ b/src/pki.c @@ -64,16 +64,22 @@ #include "libssh/misc.h" #include "libssh/agent.h" -enum ssh_keytypes_e pki_privatekey_type_from_string(const char *privkey) { - if (strncmp(privkey, DSA_HEADER_BEGIN, strlen(DSA_HEADER_BEGIN)) == 0) { +enum ssh_keytypes_e pki_privatekey_type_from_string(const char *privkey) +{ + int cmp; + + cmp = strncmp(privkey, DSA_HEADER_BEGIN, strlen(DSA_HEADER_BEGIN)); + if (cmp == 0) { return SSH_KEYTYPE_DSS; } - if (strncmp(privkey, RSA_HEADER_BEGIN, strlen(RSA_HEADER_BEGIN)) == 0) { + cmp = strncmp(privkey, RSA_HEADER_BEGIN, strlen(RSA_HEADER_BEGIN)); + if (cmp == 0) { return SSH_KEYTYPE_RSA; } - if (strncmp(privkey, ECDSA_HEADER_BEGIN, strlen(ECDSA_HEADER_BEGIN)) == 0) { + cmp = strncmp(privkey, ECDSA_HEADER_BEGIN, strlen(ECDSA_HEADER_BEGIN)); + if (cmp == 0) { /* We don't know what the curve is at this point, so we don't actually * know the type. We figure out the actual curve and fix things up in * pki_private_key_from_base64 */