aboutsummaryrefslogtreecommitdiff
path: root/src/dh.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dh.c')
-rw-r--r--src/dh.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/src/dh.c b/src/dh.c
index ee83a66..d82fdcc 100644
--- a/src/dh.c
+++ b/src/dh.c
@@ -54,6 +54,7 @@
#include "libssh/buffer.h"
#include "libssh/session.h"
#include "libssh/keys.h"
+#include "libssh/misc.h"
#include "libssh/dh.h"
#include "libssh/ssh2.h"
@@ -1016,30 +1017,6 @@ ssh_string ssh_get_pubkey(ssh_session session){
return ssh_string_copy(session->current_crypto->server_pubkey);
}
-static int match(const char *group, const char *object){
- const char *a;
- const char *z;
-
- z = group;
- do {
- a = strchr(z, ',');
- if (a == NULL) {
- if (strcmp(z, object) == 0) {
- return 1;
- }
- return 0;
- } else {
- if (strncmp(z, object, a - z) == 0) {
- return 1;
- }
- }
- z = a + 1;
- } while(1);
-
- /* not reached */
- return 0;
-}
-
int sig_verify(ssh_session session, ssh_public_key pubkey,
SIGNATURE *signature, unsigned char *digest, int size) {
#ifdef HAVE_LIBGCRYPT
@@ -1149,7 +1126,7 @@ int signature_verify(ssh_session session, ssh_string signature) {
}
if (session->wanted_methods[SSH_HOSTKEYS]) {
- if(!match(session->wanted_methods[SSH_HOSTKEYS],pubkey->type_c)) {
+ if(!ssh_match_group(session->wanted_methods[SSH_HOSTKEYS],pubkey->type_c)) {
ssh_set_error(session, SSH_FATAL,
"Public key from server (%s) doesn't match user preference (%s)",
pubkey->type_c, session->wanted_methods[SSH_HOSTKEYS]);