OpenVPN
|
#include "syshead.h"
#include "buffer.h"
#include "misc.h"
#include "base64.h"
#include "tun.h"
#include "error.h"
#include "otime.h"
#include "plugin.h"
#include "options.h"
#include "manage.h"
#include "crypto.h"
#include "route.h"
#include "console.h"
#include "win32.h"
#include "memdbg.h"
Go to the source code of this file.
Macros | |
#define | n_rnd_bytes 6 |
Functions | |
void | set_std_files_to_null (bool stdin_only) |
const char * | hostname_randomize (const char *hostname, struct gc_arena *gc) |
static bool | auth_user_pass_mgmt (struct user_pass *up, const char *prefix, const unsigned int flags, const char *auth_challenge) |
static struct auth_challenge_info * | parse_auth_challenge (const char *auth_challenge, struct gc_arena *gc) |
Parses an authentication challenge string and returns an auth_challenge_info structure. More... | |
bool | get_user_pass_cr (struct user_pass *up, const char *auth_file, const char *prefix, const unsigned int flags, const char *auth_challenge) |
Retrieves the user credentials from various sources depending on the flags. More... | |
void | purge_user_pass (struct user_pass *up, const bool force) |
void | set_auth_token (struct user_pass *tk, const char *token) |
Sets the auth-token to token. More... | |
void | set_auth_token_user (struct user_pass *tk, const char *username) |
Sets the auth-token username by base64 decoding the passed username. More... | |
const char * | safe_print (const char *str, struct gc_arena *gc) |
const char ** | make_arg_array (const char *first, const char *parms, struct gc_arena *gc) |
static const char ** | make_inline_array (const char *str, struct gc_arena *gc) |
static const char ** | make_arg_copy (char **p, struct gc_arena *gc) |
const char ** | make_extended_arg_array (char **p, bool is_inline, struct gc_arena *gc) |
const char * | sanitize_control_message (const char *src, struct gc_arena *gc) |
bool | validate_peer_info_line (char *line) |
void | output_peer_info_env (struct env_set *es, const char *peer_info) |
struct buffer | prepend_dir (const char *dir, const char *path, struct gc_arena *gc) |
Prepend a directory to a path. More... | |
#define n_rnd_bytes 6 |
|
static |
Definition at line 100 of file misc.c.
References auth_challenge, GET_USER_PASS_NOFATAL, GET_USER_PASS_PREVIOUS_CREDS_FAILED, GET_USER_PASS_STATIC_CHALLENGE, M_FATAL, management_auth_failure(), management_query_user_pass(), and msg.
Referenced by get_user_pass_cr().
bool get_user_pass_cr | ( | struct user_pass * | up, |
const char * | auth_file, | ||
const char * | prefix, | ||
const unsigned int | flags, | ||
const char * | auth_challenge | ||
) |
Retrieves the user credentials from various sources depending on the flags.
up | The user_pass structure to store the retrieved credentials. |
auth_file | The path to the authentication file. Might be NULL. |
prefix | The prefix to prepend to user prompts. |
flags | Additional flags to control the behavior of the function. |
auth_challenge | The authentication challenge string. |
Definition at line 211 of file misc.c.
Referenced by auth_user_pass_setup(), test_get_user_pass_authfile_file(), test_get_user_pass_authfile_stdin(), test_get_user_pass_defined(), test_get_user_pass_dynamic_challenge(), test_get_user_pass_inline_creds(), test_get_user_pass_needok(), and test_get_user_pass_static_challenge().
const char* hostname_randomize | ( | const char * | hostname, |
struct gc_arena * | gc | ||
) |
Definition at line 82 of file misc.c.
References alloc_buf_gc(), BSTR, buf_printf(), format_hex_ex(), n_rnd_bytes, and prng_bytes().
Referenced by openvpn_getaddrinfo().
const char** make_arg_array | ( | const char * | first, |
const char * | parms, | ||
struct gc_arena * | gc | ||
) |
Definition at line 543 of file misc.c.
References ALLOC_ARRAY_CLEAR_GC, ASSERT, M_WARN, MAX_PARMS, parse_line(), and string_alloc().
Referenced by make_extended_arg_array().
|
static |
Definition at line 601 of file misc.c.
References ALLOC_ARRAY_CLEAR_GC, buffer::len, and string_array_len().
Referenced by make_extended_arg_array().
const char** make_extended_arg_array | ( | char ** | p, |
bool | is_inline, | ||
struct gc_arena * | gc | ||
) |
Definition at line 620 of file misc.c.
References make_arg_array(), make_arg_copy(), make_inline_array(), and string_array_len().
Referenced by plugin_option_list_add(), and push_options().
|
static |
Definition at line 570 of file misc.c.
References ALLOC_ARRAY_CLEAR_GC, ASSERT, buf_parse(), buf_set_read(), chomp(), buffer::len, OPTION_LINE_SIZE, skip_leading_whitespace(), and string_alloc().
Referenced by make_extended_arg_array().
void output_peer_info_env | ( | struct env_set * | es, |
const char * | peer_info | ||
) |
Definition at line 751 of file misc.c.
References buf_parse(), buf_set_read(), chomp(), env_set_add(), es, M_INFO, M_WARN, msg, and validate_peer_info_line().
Referenced by key_method_2_read().
|
static |
Parses an authentication challenge string and returns an auth_challenge_info structure.
The authentication challenge string should follow the dynamic challenge/response protocol.
See doc/management-notes.txt for more info on the dynamic challenge/response protocol implemented here.
auth_challenge | The authentication challenge string to parse. Can't be NULL. |
gc | The gc_arena structure for memory allocation. |
Definition at line 141 of file misc.c.
References ALLOC_OBJ_CLEAR_GC, ASSERT, auth_challenge, BSTR, buf_parse(), buf_set_read(), auth_challenge_info::challenge_text, CR_ECHO, CR_RESPONSE, auth_challenge_info::flags, gc_malloc(), buffer::len, openvpn_base64_decode(), auth_challenge_info::state_id, string_alloc(), and auth_challenge_info::user.
Referenced by get_user_pass_cr().
Prepend a directory to a path.
Definition at line 773 of file misc.c.
References alloc_buf_gc(), ASSERT, buf_printf(), buffer::len, and PATH_SEPARATOR_STR.
Referenced by check_file_access_chroot(), and init_ssl().
void purge_user_pass | ( | struct user_pass * | up, |
const bool | force | ||
) |
Definition at line 473 of file misc.c.
Referenced by clear_user_pass_http(), key_method_2_write(), pem_password_callback(), ssl_clean_auth_token(), and ssl_purge_auth().
const char* safe_print | ( | const char * | str, |
struct gc_arena * | gc | ||
) |
Definition at line 537 of file misc.c.
References CC_CRLF, CC_PRINT, and string_mod_const().
Referenced by options_warning_safe_scan2().
const char* sanitize_control_message | ( | const char * | src, |
struct gc_arena * | gc | ||
) |
Definition at line 650 of file misc.c.
References check_debug_level(), D_SHOW_KEYS, and gc_malloc().
Referenced by incoming_push_message(), and send_control_channel_string_dowork().
void set_auth_token | ( | struct user_pass * | tk, |
const char * | token | ||
) |
Sets the auth-token to token.
The method will also purge up if the auth-nocache option is active.
tk | auth-token userpass to set |
token | token to use as password for the auth-token |
Definition at line 494 of file misc.c.
References user_pass::defined, user_pass::password, strncpynt(), user_pass::token_defined, USER_PASS_LEN, and user_pass::username.
Referenced by ssl_set_auth_token().
void set_auth_token_user | ( | struct user_pass * | tk, |
const char * | username | ||
) |
Sets the auth-token username by base64 decoding the passed username.
tk | auth-token userpass to set |
username | base64 encoded username to set |
Definition at line 512 of file misc.c.
References CLEAR, D_PUSH, user_pass::defined, buffer::len, msg, openvpn_base64_decode(), USER_PASS_LEN, and user_pass::username.
Referenced by ssl_set_auth_token_user().
void set_std_files_to_null | ( | bool | stdin_only | ) |
Definition at line 56 of file misc.c.
Referenced by open_syslog(), and possibly_become_daemon().
bool validate_peer_info_line | ( | char * | line | ) |
Definition at line 713 of file misc.c.
Referenced by man_output_peer_info_env(), and output_peer_info_env().