|
Packit |
549fdc |
/*
|
|
Packit |
549fdc |
* Copyright (C) 2004-2016 Free Software Foundation, Inc.
|
|
Packit |
549fdc |
* Copyright (C) 2016 Red Hat, Inc.
|
|
Packit |
549fdc |
*
|
|
Packit |
549fdc |
* Author: Simon Josefsson, Nikos Mavrogiannopoulos
|
|
Packit |
549fdc |
*
|
|
Packit |
549fdc |
* This file is part of GnuTLS.
|
|
Packit |
549fdc |
*
|
|
Packit |
549fdc |
* GnuTLS is free software; you can redistribute it and/or modify it
|
|
Packit |
549fdc |
* under the terms of the GNU General Public License as published by
|
|
Packit |
549fdc |
* the Free Software Foundation; either version 3 of the License, or
|
|
Packit |
549fdc |
* (at your option) any later version.
|
|
Packit |
549fdc |
*
|
|
Packit |
549fdc |
* GnuTLS is distributed in the hope that it will be useful, but
|
|
Packit |
549fdc |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
549fdc |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
549fdc |
* General Public License for more details.
|
|
Packit |
549fdc |
*
|
|
Packit |
549fdc |
* You should have received a copy of the GNU General Public License
|
|
Packit |
549fdc |
* along with GnuTLS; if not, write to the Free Software Foundation,
|
|
Packit |
549fdc |
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
Packit |
549fdc |
*/
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#ifndef UTILS_H
|
|
Packit |
549fdc |
#define UTILS_H
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#include <stdio.h>
|
|
Packit |
549fdc |
#include <signal.h>
|
|
Packit |
549fdc |
#include <string.h>
|
|
Packit |
549fdc |
#include <stdarg.h>
|
|
Packit |
549fdc |
#include <gnutls/gnutls.h>
|
|
Packit |
549fdc |
#include <gnutls/pkcs11.h>
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#ifndef __attribute__
|
|
Packit |
549fdc |
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
|
|
Packit |
549fdc |
#define __attribute__(Spec) /* empty */
|
|
Packit |
549fdc |
#endif
|
|
Packit |
549fdc |
#endif
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#ifdef NDEBUG
|
|
Packit |
549fdc |
# error tests cannot be compiled with NDEBUG defined
|
|
Packit |
549fdc |
#endif
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
inline static int global_init(void)
|
|
Packit |
549fdc |
{
|
|
Packit |
549fdc |
#ifdef ENABLE_PKCS11
|
|
Packit |
549fdc |
gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_MANUAL, NULL);
|
|
Packit |
549fdc |
#endif
|
|
Packit |
549fdc |
return gnutls_global_init();
|
|
Packit |
549fdc |
}
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
extern int debug;
|
|
Packit |
549fdc |
extern int error_count;
|
|
Packit |
549fdc |
extern int break_on_error;
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
extern const char *pkcs3;
|
|
Packit |
549fdc |
extern const char *pkcs3_2048;
|
|
Packit |
549fdc |
extern const char *pkcs3_3072;
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#define fail(format, ...) \
|
|
Packit |
549fdc |
_fail("%s:%d: "format, __func__, __LINE__, ##__VA_ARGS__)
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
extern void _fail(const char *format, ...)
|
|
Packit |
549fdc |
__attribute__ ((format(printf, 1, 2)));
|
|
Packit |
549fdc |
extern void fail_ignore(const char *format, ...)
|
|
Packit |
549fdc |
__attribute__ ((format(printf, 1, 2)));
|
|
Packit |
549fdc |
extern void success(const char *format, ...)
|
|
Packit |
549fdc |
__attribute__ ((format(printf, 1, 2)));
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
/* assumes test_name is defined */
|
|
Packit |
549fdc |
#define test_fail(fmt, ...) \
|
|
Packit |
549fdc |
fail("%s: "fmt, test_name, ##__VA_ARGS__)
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#define test_success(fmt, ...) \
|
|
Packit |
549fdc |
success("%s: "fmt, test_name, ##__VA_ARGS__)
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
extern void c_print(const unsigned char *str, size_t len);
|
|
Packit |
549fdc |
extern void escapeprint(const char *str, size_t len);
|
|
Packit |
549fdc |
extern void hexprint(const void *str, size_t len);
|
|
Packit |
549fdc |
extern void binprint(const void *str, size_t len);
|
|
Packit |
549fdc |
int disable_system_calls(void);
|
|
Packit |
549fdc |
void sec_sleep(int sec);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
int
|
|
Packit |
549fdc |
test_cli_serv_anon(gnutls_anon_server_credentials_t server_cred,
|
|
Packit |
549fdc |
gnutls_anon_client_credentials_t client_cred,
|
|
Packit |
549fdc |
const char *prio);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
int
|
|
Packit |
549fdc |
test_cli_serv_psk(gnutls_psk_server_credentials_t server_cred,
|
|
Packit |
549fdc |
gnutls_psk_client_credentials_t client_cred,
|
|
Packit |
549fdc |
const char *prio);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
typedef void callback_func(gnutls_session_t, void *priv);
|
|
Packit |
549fdc |
void test_cli_serv(gnutls_certificate_credentials_t server_cred,
|
|
Packit |
549fdc |
gnutls_certificate_credentials_t client_cred,
|
|
Packit |
549fdc |
const char *prio, const char *host,
|
|
Packit |
549fdc |
void *priv,
|
|
Packit |
549fdc |
callback_func * client_cb, callback_func * server_cb);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
void print_dh_params_info(gnutls_session_t);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
void
|
|
Packit |
549fdc |
test_cli_serv_cert(gnutls_certificate_credentials_t server_cred,
|
|
Packit |
549fdc |
gnutls_certificate_credentials_t client_cred,
|
|
Packit |
549fdc |
const char *serv_prio, const char *cli_prio, const char *host);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
void
|
|
Packit |
549fdc |
test_cli_serv_expect(gnutls_certificate_credentials_t server_cred,
|
|
Packit |
549fdc |
gnutls_certificate_credentials_t client_cred,
|
|
Packit |
549fdc |
const char *serv_prio, const char *cli_prio, const char *host,
|
|
Packit |
549fdc |
int serv_err, int cli_err);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
/* verification failed */
|
|
Packit |
549fdc |
unsigned
|
|
Packit |
549fdc |
test_cli_serv_vf(gnutls_certificate_credentials_t server_cred,
|
|
Packit |
549fdc |
gnutls_certificate_credentials_t client_cred,
|
|
Packit |
549fdc |
const char *prio, const char *host);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#define TMPNAME_SIZE 128
|
|
Packit |
549fdc |
char *get_tmpname(char s[TMPNAME_SIZE]);
|
|
Packit |
549fdc |
void track_temp_files(void);
|
|
Packit |
549fdc |
void delete_temp_files(void);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
/* This must be implemented elsewhere. */
|
|
Packit |
549fdc |
extern void doit(void);
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
/* calls fail() if status indicates an error */
|
|
Packit |
549fdc |
inline static void _check_wait_status(int status, unsigned sigonly)
|
|
Packit |
549fdc |
{
|
|
Packit |
549fdc |
#if defined WEXITSTATUS && defined WIFSIGNALED
|
|
Packit |
549fdc |
if (WEXITSTATUS(status) != 0 ||
|
|
Packit |
549fdc |
(WIFSIGNALED(status) && WTERMSIG(status) == SIGSEGV)) {
|
|
Packit |
549fdc |
if (WIFSIGNALED(status)) {
|
|
Packit |
549fdc |
fail("Child died with signal %d\n", WTERMSIG(status));
|
|
Packit |
549fdc |
} else {
|
|
Packit |
549fdc |
if (!sigonly)
|
|
Packit |
549fdc |
fail("Child died with status %d\n",
|
|
Packit |
549fdc |
WEXITSTATUS(status));
|
|
Packit |
549fdc |
}
|
|
Packit |
549fdc |
}
|
|
Packit |
549fdc |
#endif
|
|
Packit |
549fdc |
}
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
inline static void check_wait_status(int status)
|
|
Packit |
549fdc |
{
|
|
Packit |
549fdc |
_check_wait_status(status, 0);
|
|
Packit |
549fdc |
}
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
inline static void check_wait_status_for_sig(int status)
|
|
Packit |
549fdc |
{
|
|
Packit |
549fdc |
_check_wait_status(status, 1);
|
|
Packit |
549fdc |
}
|
|
Packit |
549fdc |
|
|
Packit |
549fdc |
#endif /* UTILS_H */
|