int test(LIBSSH2_SESSION *session) { int rc; const char *userauth_list = libssh2_userauth_list(session, USERNAME, strlen(USERNAME)); if(userauth_list == NULL) { print_last_session_error("libssh2_userauth_list"); return 1; } if(strstr(userauth_list, "keyboard-interactive") == NULL) { fprintf(stderr, "'keyboard-interactive' was expected in userauth list: %s\n", userauth_list); return 1; } rc = libssh2_userauth_keyboard_interactive_ex( session, USERNAME, strlen(USERNAME), kbd_callback); if(rc != 0) { print_last_session_error("libssh2_userauth_keyboard_interactive_ex"); return 1; } return 0; }
int test(LIBSSH2_SESSION *session) { int rc; const char *userauth_list = libssh2_userauth_list(session, USERNAME, strlen(USERNAME)); if (userauth_list == NULL) { print_last_session_error("libssh2_userauth_list"); return 1; } if (strstr(userauth_list, "publickey") == NULL) { fprintf(stderr, "'publickey' was expected in userauth list: %s\n", userauth_list); return 1; } rc = libssh2_userauth_publickey_fromfile_ex( session, USERNAME, strlen(USERNAME), KEY_FILE_PUBLIC, KEY_FILE_PRIVATE, NULL); if (rc != 0) { print_last_session_error("libssh2_userauth_publickey_fromfile_ex"); return 1; } return 0; }
static int connect_to_server() { int rc; connected_socket = open_socket_to_openssh_server(); if(connected_socket <= 0) { return -1; } rc = libssh2_session_handshake(connected_session, connected_socket); if(rc != 0) { print_last_session_error("libssh2_session_handshake"); return -1; } return 0; }
int test(LIBSSH2_SESSION *session) { char buf[BUFSIZ]; const char *md5_hash; const char *sha1_hash; const char *sha256_hash; int type; size_t len; /* these are the host keys under test, they are currently unused */ (void)EXPECTED_RSA_HOSTKEY; (void)EXPECTED_ECDSA_HOSTKEY; const char *hostkey = libssh2_session_hostkey(session, &len, &type); if(hostkey == NULL) { print_last_session_error("libssh2_session_hostkey"); return 1; } if(type == LIBSSH2_HOSTKEY_TYPE_ECDSA_256) { md5_hash = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_MD5); if(md5_hash == NULL) { print_last_session_error( "libssh2_hostkey_hash(LIBSSH2_HOSTKEY_HASH_MD5)"); return 1; } calculate_digest(md5_hash, MD5_HASH_SIZE, buf, BUFSIZ); if(strcmp(buf, EXPECTED_ECDSA_MD5_HASH_DIGEST) != 0) { fprintf(stderr, "ECDSA MD5 hash not as expected - digest %s != %s\n", buf, EXPECTED_ECDSA_MD5_HASH_DIGEST); return 1; } sha1_hash = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1); if(sha1_hash == NULL) { print_last_session_error( "libssh2_hostkey_hash(LIBSSH2_HOSTKEY_HASH_SHA1)"); return 1; } calculate_digest(sha1_hash, SHA1_HASH_SIZE, buf, BUFSIZ); if(strcmp(buf, EXPECTED_ECDSA_SHA1_HASH_DIGEST) != 0) { fprintf(stderr, "ECDSA SHA1 hash not as expected - digest %s != %s\n", buf, EXPECTED_ECDSA_SHA1_HASH_DIGEST); return 1; } sha256_hash = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA256); if(sha256_hash == NULL) { print_last_session_error( "libssh2_hostkey_hash(LIBSSH2_HOSTKEY_HASH_SHA256)"); return 1; } calculate_digest(sha256_hash, SHA256_HASH_SIZE, buf, BUFSIZ); if(strcmp(buf, EXPECTED_ECDSA_SHA256_HASH_DIGEST) != 0) { fprintf(stderr, "ECDSA SHA256 hash not as expected - digest %s != %s\n", buf, EXPECTED_ECDSA_SHA256_HASH_DIGEST); return 1; } } else if(type == LIBSSH2_HOSTKEY_TYPE_RSA) { md5_hash = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_MD5); if(md5_hash == NULL) { print_last_session_error( "libssh2_hostkey_hash(LIBSSH2_HOSTKEY_HASH_MD5)"); return 1; } calculate_digest(md5_hash, MD5_HASH_SIZE, buf, BUFSIZ); if(strcmp(buf, EXPECTED_RSA_MD5_HASH_DIGEST) != 0) { fprintf(stderr, "MD5 hash not as expected - digest %s != %s\n", buf, EXPECTED_RSA_MD5_HASH_DIGEST); return 1; } sha1_hash = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1); if(sha1_hash == NULL) { print_last_session_error( "libssh2_hostkey_hash(LIBSSH2_HOSTKEY_HASH_SHA1)"); return 1; } calculate_digest(sha1_hash, SHA1_HASH_SIZE, buf, BUFSIZ); if(strcmp(buf, EXPECTED_RSA_SHA1_HASH_DIGEST) != 0) { fprintf(stderr, "SHA1 hash not as expected - digest %s != %s\n", buf, EXPECTED_RSA_SHA1_HASH_DIGEST); return 1; } sha256_hash = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA256); if(sha256_hash == NULL) { print_last_session_error( "libssh2_hostkey_hash(LIBSSH2_HOSTKEY_HASH_SHA256)"); return 1; } calculate_digest(sha256_hash, SHA256_HASH_SIZE, buf, BUFSIZ); if(strcmp(buf, EXPECTED_RSA_SHA256_HASH_DIGEST) != 0) { fprintf(stderr, "SHA256 hash not as expected - digest %s != %s\n", buf, EXPECTED_RSA_SHA256_HASH_DIGEST); return 1; } } else { fprintf(stderr, "Unexpected type of hostkey: %i\n", type); return 1; } return 0; }