Blame tests/client/torture_algorithms.c

Packit Service 31306d
/*
Packit Service 31306d
 * This file is part of the SSH Library
Packit Service 31306d
 *
Packit Service 31306d
 * Copyright (c) 2010 by Aris Adamantiadis
Packit Service 31306d
 *
Packit Service 31306d
 * The SSH Library is free software; you can redistribute it and/or modify
Packit Service 31306d
 * it under the terms of the GNU Lesser General Public License as published by
Packit Service 31306d
 * the Free Software Foundation; either version 2.1 of the License, or (at your
Packit Service 31306d
 * option) any later version.
Packit Service 31306d
 *
Packit Service 31306d
 * The SSH Library is distributed in the hope that it will be useful, but
Packit Service 31306d
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
Packit Service 31306d
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
Packit Service 31306d
 * License for more details.
Packit Service 31306d
 *
Packit Service 31306d
 * You should have received a copy of the GNU Lesser General Public License
Packit Service 31306d
 * along with the SSH Library; see the file COPYING.  If not, write to
Packit Service 31306d
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
Packit Service 31306d
 * MA 02111-1307, USA.
Packit Service 31306d
 */
Packit Service 31306d
Packit Service 31306d
#include "config.h"
Packit Service 31306d
Packit Service 31306d
#define LIBSSH_STATIC
Packit Service 31306d
Packit Service 31306d
#include "torture.h"
Packit Service 31306d
#include "libssh/libssh.h"
Packit Service 31306d
#include "libssh/priv.h"
Packit Service 31306d
#include "libssh/session.h"
Packit Service 31306d
Packit Service 31306d
#include <errno.h>
Packit Service 31306d
#include <sys/types.h>
Packit Service 31306d
#include <pwd.h>
Packit Service 31306d
Packit Service 31306d
static int sshd_setup(void **state)
Packit Service 31306d
{
Packit Service 31306d
    torture_setup_sshd_server(state, false);
Packit Service 31306d
Packit Service 31306d
    return 0;
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static int sshd_teardown(void **state) {
Packit Service 31306d
    torture_teardown_sshd_server(state);
Packit Service 31306d
Packit Service 31306d
    return 0;
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static int session_setup(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
    int verbosity = torture_libssh_verbosity();
Packit Service 31306d
    struct passwd *pwd;
Packit Service 31306d
    bool false_v = false;
Packit Service 31306d
    int rc;
Packit Service 31306d
Packit Service 31306d
    pwd = getpwnam("bob");
Packit Service 31306d
    assert_non_null(pwd);
Packit Service 31306d
Packit Service 31306d
    rc = setuid(pwd->pw_uid);
Packit Service 31306d
    assert_return_code(rc, errno);
Packit Service 31306d
Packit Service 31306d
    s->ssh.session = ssh_new();
Packit Service 31306d
    assert_non_null(s->ssh.session);
Packit Service 31306d
Packit Service 31306d
    ssh_options_set(s->ssh.session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
Packit Service 31306d
    ssh_options_set(s->ssh.session, SSH_OPTIONS_HOST, TORTURE_SSH_SERVER);
Packit Service 31306d
    /* Prevent parsing configuration files that can introduce different
Packit Service 31306d
     * algorithms then we want to test */
Packit Service 31306d
    ssh_options_set(s->ssh.session, SSH_OPTIONS_PROCESS_CONFIG, &false_v);
Packit Service 31306d
Packit Service 31306d
    return 0;
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static int session_teardown(void **state)
Packit Service 31306d
{
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    ssh_disconnect(s->ssh.session);
Packit Service 31306d
    ssh_free(s->ssh.session);
Packit Service 31306d
Packit Service 31306d
    return 0;
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void test_algorithm(ssh_session session,
Packit Service 31306d
                           const char *kex,
Packit Service 31306d
                           const char *cipher,
Packit Service 31306d
                           const char *hmac) {
Packit Service 31306d
    int rc;
Packit Service 31306d
    char data[256];
Packit Service 31306d
    size_t len_to_test[] = {
Packit Service 31306d
        1, 2, 3, 4, 5, 6, 7, 8, 10,
Packit Service 31306d
        12, 15, 16, 20,
Packit Service 31306d
        31, 32, 33,
Packit Service 31306d
        63, 64, 65,
Packit Service 31306d
        100, 127, 128
Packit Service 31306d
    };
Packit Service 31306d
    unsigned int i;
Packit Service 31306d
Packit Service 31306d
    if (kex != NULL) {
Packit Service 31306d
        rc = ssh_options_set(session, SSH_OPTIONS_KEY_EXCHANGE, kex);
Packit Service 31306d
        assert_ssh_return_code(session, rc);
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    if (cipher != NULL) {
Packit Service 31306d
        rc = ssh_options_set(session, SSH_OPTIONS_CIPHERS_C_S, cipher);
Packit Service 31306d
        assert_ssh_return_code(session, rc);
Packit Service 31306d
        rc = ssh_options_set(session, SSH_OPTIONS_CIPHERS_S_C, cipher);
Packit Service 31306d
        assert_ssh_return_code(session, rc);
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    if (hmac != NULL) {
Packit Service 31306d
        rc = ssh_options_set(session, SSH_OPTIONS_HMAC_C_S, hmac);
Packit Service 31306d
        assert_ssh_return_code(session, rc);
Packit Service 31306d
        rc = ssh_options_set(session, SSH_OPTIONS_HMAC_S_C, hmac);
Packit Service 31306d
        assert_ssh_return_code(session, rc);
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    rc = ssh_connect(session);
Packit Service 31306d
    assert_ssh_return_code(session, rc);
Packit Service 31306d
Packit Service 31306d
    /* send ignore packets of all sizes */
Packit Service 31306d
    memset(data, 0, sizeof(data));
Packit Service 31306d
    for (i = 0; i < (sizeof(len_to_test) / sizeof(size_t)); i++) {
Packit Service 31306d
        memset(data, 'A', len_to_test[i]);
Packit Service 31306d
        ssh_send_ignore(session, data);
Packit Service 31306d
        ssh_handle_packets(session, 50);
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    rc = ssh_userauth_none(session, NULL);
Packit Service 31306d
    if (rc != SSH_OK) {
Packit Service 31306d
        rc = ssh_get_error_code(session);
Packit Service 31306d
        assert_int_equal(rc, SSH_REQUEST_DENIED);
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    ssh_disconnect(session);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_cbc_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-cbc", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_cbc_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-cbc", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_cbc_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-cbc", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_cbc_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-cbc", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_cbc_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-cbc", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_cbc_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-cbc", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_cbc_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-cbc", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_cbc_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-cbc", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_cbc_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-cbc", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_cbc_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-cbc", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_cbc_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-cbc", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_cbc_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-cbc", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_cbc_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-cbc", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_cbc_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-cbc", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_cbc_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-cbc", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_cbc_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-cbc", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_cbc_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-cbc", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_cbc_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-cbc", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_ctr_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-ctr", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_ctr_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-ctr", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_ctr_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-ctr", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_ctr_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-ctr", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_ctr_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-ctr", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_ctr_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-ctr", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_ctr_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-ctr", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_ctr_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-ctr", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_ctr_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-ctr", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_ctr_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-ctr", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_ctr_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-ctr", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes192_ctr_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes192-ctr", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_ctr_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-ctr", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_ctr_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-ctr", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_ctr_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-ctr", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_ctr_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-ctr", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_ctr_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-ctr", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_ctr_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-ctr", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes128_gcm(void **state)
Packit Service 31306d
{
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes128-gcm@openssh.com", NULL);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_aes256_gcm(void **state)
Packit Service 31306d
{
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "aes256-gcm@openssh.com", NULL);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_3des_cbc_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "3des-cbc", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_3des_cbc_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "3des-cbc", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_3des_cbc_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "3des-cbc", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_3des_cbc_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "3des-cbc", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_3des_cbc_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "3des-cbc", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_3des_cbc_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "3des-cbc", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
#ifdef WITH_BLOWFISH_CIPHER
Packit Service 31306d
#if ((OPENSSH_VERSION_MAJOR == 7 && OPENSSH_VERSION_MINOR < 6) || OPENSSH_VERSION_MAJOR <= 6)
Packit Service 31306d
static void torture_algorithms_blowfish_cbc_hmac_sha1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "blowfish-cbc", "hmac-sha1");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_blowfish_cbc_hmac_sha2_256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "blowfish-cbc", "hmac-sha2-256");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_blowfish_cbc_hmac_sha2_512(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "blowfish-cbc", "hmac-sha2-512");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_blowfish_cbc_hmac_sha1_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "blowfish-cbc", "hmac-sha1-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_blowfish_cbc_hmac_sha2_256_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "blowfish-cbc", "hmac-sha2-256-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_blowfish_cbc_hmac_sha2_512_etm(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, NULL/*kex*/, "blowfish-cbc", "hmac-sha2-512-etm@openssh.com");
Packit Service 31306d
}
Packit Service 31306d
#endif
Packit Service 31306d
#endif /* WITH_BLOWFISH_CIPHER */
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_chacha20_poly1305(void **state)
Packit Service 31306d
{
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session,
Packit Service 31306d
                   NULL, /*kex*/
Packit Service 31306d
                   "chacha20-poly1305@openssh.com",
Packit Service 31306d
                   NULL);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_zlib(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
    ssh_session session = s->ssh.session;
Packit Service 31306d
    int rc;
Packit Service 31306d
Packit Service 31306d
    rc = ssh_options_set(session, SSH_OPTIONS_COMPRESSION_C_S, "zlib");
Packit Service 31306d
#ifdef WITH_ZLIB
Packit Service 31306d
    assert_int_equal(rc, SSH_OK);
Packit Service 31306d
#else
Packit Service 31306d
    assert_int_equal(rc, SSH_ERROR);
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
    rc = ssh_options_set(session, SSH_OPTIONS_COMPRESSION_S_C, "zlib");
Packit Service 31306d
#ifdef WITH_ZLIB
Packit Service 31306d
    assert_int_equal(rc, SSH_OK);
Packit Service 31306d
#else
Packit Service 31306d
    assert_int_equal(rc, SSH_ERROR);
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
    rc = ssh_connect(session);
Packit Service 31306d
#ifdef WITH_ZLIB
Packit Service 31306d
    if (ssh_get_openssh_version(session)) {
Packit Service 31306d
        assert_false(rc == SSH_OK);
Packit Service 31306d
        ssh_disconnect(session);
Packit Service 31306d
        return;
Packit Service 31306d
    }
Packit Service 31306d
#endif
Packit Service 31306d
    assert_int_equal(rc, SSH_OK);
Packit Service 31306d
Packit Service 31306d
    rc = ssh_userauth_none(session, NULL);
Packit Service 31306d
    if (rc != SSH_OK) {
Packit Service 31306d
        rc = ssh_get_error_code(session);
Packit Service 31306d
        assert_int_equal(rc, SSH_REQUEST_DENIED);
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    ssh_disconnect(session);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_zlib_openssh(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
    ssh_session session = s->ssh.session;
Packit Service 31306d
    int rc;
Packit Service 31306d
Packit Service 31306d
    rc = ssh_options_set(session, SSH_OPTIONS_COMPRESSION_C_S, "zlib@openssh.com");
Packit Service 31306d
#ifdef WITH_ZLIB
Packit Service 31306d
    assert_int_equal(rc, SSH_OK);
Packit Service 31306d
#else
Packit Service 31306d
    assert_int_equal(rc, SSH_ERROR);
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
    rc = ssh_options_set(session, SSH_OPTIONS_COMPRESSION_S_C, "zlib@openssh.com");
Packit Service 31306d
#ifdef WITH_ZLIB
Packit Service 31306d
    assert_int_equal(rc, SSH_OK);
Packit Service 31306d
#else
Packit Service 31306d
    assert_int_equal(rc, SSH_ERROR);
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
    rc = ssh_connect(session);
Packit Service 31306d
#ifdef WITH_ZLIB
Packit Service 31306d
    if (ssh_get_openssh_version(session)) {
Packit Service 31306d
        assert_true(rc==SSH_OK);
Packit Service 31306d
        rc = ssh_userauth_none(session, NULL);
Packit Service 31306d
        if (rc != SSH_OK) {
Packit Service 31306d
            rc = ssh_get_error_code(session);
Packit Service 31306d
            assert_int_equal(rc, SSH_REQUEST_DENIED);
Packit Service 31306d
        }
Packit Service 31306d
        ssh_disconnect(session);
Packit Service 31306d
        return;
Packit Service 31306d
    }
Packit Service 31306d
    assert_false(rc == SSH_OK);
Packit Service 31306d
#else
Packit Service 31306d
    assert_int_equal(rc, SSH_OK);
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
    ssh_disconnect(session);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
#if defined(HAVE_ECC)
Packit Service 31306d
static void torture_algorithms_ecdh_sha2_nistp256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "ecdh-sha2-nistp256", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_ecdh_sha2_nistp384(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "ecdh-sha2-nistp384", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_ecdh_sha2_nistp521(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "ecdh-sha2-nistp521", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
#if ((OPENSSH_VERSION_MAJOR == 7 && OPENSSH_VERSION_MINOR >= 3) || OPENSSH_VERSION_MAJOR > 7)
Packit Service 31306d
static void torture_algorithms_ecdh_curve25519_sha256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "curve25519-sha256", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
#if ((OPENSSH_VERSION_MAJOR == 6 && OPENSSH_VERSION_MINOR >= 5) || OPENSSH_VERSION_MAJOR > 6)
Packit Service 31306d
static void torture_algorithms_ecdh_curve25519_sha256_libssh_org(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "curve25519-sha256@libssh.org", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
#endif
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_dh_group1(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "diffie-hellman-group1-sha1", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_dh_group14(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "diffie-hellman-group14-sha1", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_dh_group14_sha256(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "diffie-hellman-group14-sha256", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_dh_group16(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "diffie-hellman-group16-sha512", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_dh_group18(void **state) {
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session, "diffie-hellman-group18-sha512", NULL/*cipher*/, NULL/*hmac*/);
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
#ifdef WITH_GEX
Packit Service 31306d
static void torture_algorithms_dh_gex_sha1(void **state)
Packit Service 31306d
{
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    if (ssh_fips_mode()) {
Packit Service 31306d
        skip();
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session,
Packit Service 31306d
                   "diffie-hellman-group-exchange-sha1",
Packit Service 31306d
                   NULL,  /* cipher */
Packit Service 31306d
                   NULL); /* hmac */
Packit Service 31306d
}
Packit Service 31306d
Packit Service 31306d
static void torture_algorithms_dh_gex_sha256(void **state)
Packit Service 31306d
{
Packit Service 31306d
    struct torture_state *s = *state;
Packit Service 31306d
Packit Service 31306d
    test_algorithm(s->ssh.session,
Packit Service 31306d
                   "diffie-hellman-group-exchange-sha256",
Packit Service 31306d
                   NULL, /* cipher */
Packit Service 31306d
                   NULL); /* hmac */
Packit Service 31306d
}
Packit Service 31306d
#endif /* WITH_GEX */
Packit Service 31306d
Packit Service 31306d
int torture_run_tests(void) {
Packit Service 31306d
    int rc;
Packit Service 31306d
    struct CMUnitTest tests[] = {
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_cbc_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_cbc_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_cbc_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_cbc_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_cbc_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_cbc_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_cbc_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_cbc_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_cbc_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_cbc_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_cbc_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_cbc_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_cbc_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_cbc_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_cbc_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_cbc_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_cbc_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_cbc_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_ctr_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_ctr_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_ctr_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_ctr_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_ctr_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_ctr_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_ctr_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_ctr_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_ctr_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_ctr_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_ctr_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes192_ctr_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_ctr_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_ctr_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_ctr_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_ctr_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_ctr_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_ctr_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes128_gcm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_aes256_gcm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_3des_cbc_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_3des_cbc_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_3des_cbc_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_3des_cbc_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_3des_cbc_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_3des_cbc_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#ifdef WITH_BLOWFISH_CIPHER
Packit Service 31306d
#if ((OPENSSH_VERSION_MAJOR == 7 && OPENSSH_VERSION_MINOR < 6) || OPENSSH_VERSION_MAJOR <= 6)
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_blowfish_cbc_hmac_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_blowfish_cbc_hmac_sha2_256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_blowfish_cbc_hmac_sha2_512,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_blowfish_cbc_hmac_sha1_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_blowfish_cbc_hmac_sha2_256_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_blowfish_cbc_hmac_sha2_512_etm,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#endif
Packit Service 31306d
#endif /* WITH_BLOWFISH_CIPHER */
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_chacha20_poly1305,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_zlib,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_zlib_openssh,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_group1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_group14,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_group14_sha256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_group16,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_group18,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#ifdef WITH_GEX
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_gex_sha1,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_dh_gex_sha256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#endif /* WITH_GEX */
Packit Service 31306d
#if ((OPENSSH_VERSION_MAJOR == 7 && OPENSSH_VERSION_MINOR >= 3) || OPENSSH_VERSION_MAJOR > 7)
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_ecdh_curve25519_sha256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#endif
Packit Service 31306d
#if ((OPENSSH_VERSION_MAJOR == 6 && OPENSSH_VERSION_MINOR >= 5) || OPENSSH_VERSION_MAJOR > 6)
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_ecdh_curve25519_sha256_libssh_org,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#endif
Packit Service 31306d
#if defined(HAVE_ECC)
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_ecdh_sha2_nistp256,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_ecdh_sha2_nistp384,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
        cmocka_unit_test_setup_teardown(torture_algorithms_ecdh_sha2_nistp521,
Packit Service 31306d
                                        session_setup,
Packit Service 31306d
                                        session_teardown),
Packit Service 31306d
#endif
Packit Service 31306d
    };
Packit Service 31306d
Packit Service 31306d
    ssh_init();
Packit Service 31306d
Packit Service 31306d
    torture_filter_tests(tests);
Packit Service 31306d
    rc = cmocka_run_group_tests(tests, sshd_setup, sshd_teardown);
Packit Service 31306d
Packit Service 31306d
    ssh_finalize();
Packit Service 31306d
Packit Service 31306d
    return rc;
Packit Service 31306d
}