OpenVPN
|
#include "argv.h"
#include "basic.h"
#include "common.h"
#include "env_set.h"
#include "integer.h"
#include "buffer.h"
#include "platform.h"
Go to the source code of this file.
Data Structures | |
struct | user_pass |
struct | auth_challenge_info |
struct | static_challenge_info |
Macros | |
#define | USER_PASS_LEN 128 |
#define | CR_ECHO (1<<0) /* echo response when typed by user */ |
#define | CR_RESPONSE (1<<1) /* response needed */ |
#define | SC_ECHO (1<<0) /* echo response when typed by user */ |
#define | GET_USER_PASS_MANAGEMENT (1<<0) |
#define | GET_USER_PASS_PASSWORD_ONLY (1<<2) |
#define | GET_USER_PASS_NEED_OK (1<<3) |
#define | GET_USER_PASS_NOFATAL (1<<4) |
#define | GET_USER_PASS_NEED_STR (1<<5) |
#define | GET_USER_PASS_PREVIOUS_CREDS_FAILED (1<<6) |
#define | GET_USER_PASS_DYNAMIC_CHALLENGE (1<<7) /* CRV1 protocol -- dynamic challenge */ |
#define | GET_USER_PASS_STATIC_CHALLENGE (1<<8) /* SCRV1 protocol -- static challenge */ |
#define | GET_USER_PASS_STATIC_CHALLENGE_ECHO (1<<9) /* SCRV1 protocol -- echo response */ |
#define | GET_USER_PASS_INLINE_CREDS (1<<10) /* indicates that auth_file is actually inline creds */ |
#define | _STRINGIFY(S) #S |
#define | MAC_FMT _STRINGIFY(%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx) |
#define | MAC_PRINT_ARG(_mac) |
#define | MAC_SCAN_ARG(_mac) |
Functions | |
void | set_std_files_to_null (bool stdin_only) |
const char ** | make_arg_array (const char *first, const char *parms, struct gc_arena *gc) |
const char ** | make_extended_arg_array (char **p, bool is_inline, struct gc_arena *gc) |
const char * | hostname_randomize (const char *hostname, struct gc_arena *gc) |
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... | |
static bool | get_user_pass (struct user_pass *up, const char *auth_file, const char *prefix, const unsigned int flags) |
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) |
void | configure_path (void) |
const char * | sanitize_control_message (const char *str, 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 GET_USER_PASS_DYNAMIC_CHALLENGE (1<<7) /* CRV1 protocol -- dynamic challenge */ |
#define GET_USER_PASS_INLINE_CREDS (1<<10) /* indicates that auth_file is actually inline creds */ |
#define GET_USER_PASS_STATIC_CHALLENGE (1<<8) /* SCRV1 protocol -- static challenge */ |
#define GET_USER_PASS_STATIC_CHALLENGE_ECHO (1<<9) /* SCRV1 protocol -- echo response */ |
#define MAC_FMT _STRINGIFY(%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx) |
#define MAC_PRINT_ARG | ( | _mac | ) |
#define MAC_SCAN_ARG | ( | _mac | ) |
void configure_path | ( | void | ) |
|
inlinestatic |
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. |
Definition at line 147 of file misc.h.
References get_user_pass_cr().
Referenced by auth_user_pass_setup(), context_init_1(), get_user_pass_http(), man_settings_init(), pem_password_setup(), and socks_username_password_auth().
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.
References alloc_buf_gc(), auth_challenge, auth_user_pass_mgmt(), BLEN, BOOL_CAST, BSTR, buf_parse(), buf_printf(), buf_set_read(), buf_set_write(), CC_CRLF, CC_PRINT, auth_challenge_info::challenge_text, chomp(), CR_ECHO, D_LOW, user_pass::defined, auth_challenge_info::flags, gc_free(), gc_malloc(), gc_new(), GET_USER_PASS_DYNAMIC_CHALLENGE, GET_USER_PASS_INLINE_CREDS, GET_USER_PASS_MANAGEMENT, GET_USER_PASS_NEED_OK, GET_USER_PASS_NEED_STR, GET_USER_PASS_PASSWORD_ONLY, GET_USER_PASS_PREVIOUS_CREDS_FAILED, GET_USER_PASS_STATIC_CHALLENGE, GET_USER_PASS_STATIC_CHALLENGE_ECHO, M_ERR, M_FATAL, M_INFO, M_NONFATAL, M_WARN, management_query_user_pass_enabled(), msg, openvpn_base64_encode(), parse_auth_challenge(), user_pass::password, PIN, pkcs11_id_current, pkcs11_id_management, platform_fopen(), query_user_add(), query_user_clear(), query_user_exec(), query_user_SINGLE(), auth_challenge_info::state_id, streq, string_clear(), string_mod(), strncpynt(), auth_challenge_info::user, USER_PASS_LEN, and user_pass::username.
Referenced by auth_user_pass_setup(), get_user_pass(), 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().
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().
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().
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.
References M_WARN, msg, user_pass::nocache, and secure_memzero().
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 * | str, |
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().