OpenVPN
Functions | Variables
ssl_util.c File Reference
#include "syshead.h"
#include "openvpn.h"
#include "ssl_util.h"
Include dependency graph for ssl_util.c:

Go to the source code of this file.

Functions

static const char * peer_info_extract_varstr (const char *peer_info, const char *field)
 Looks for the string field at the start of peer_info or after any new line and returns a pointer to the start of the field or NULL if not found.
 
char * extract_var_peer_info (const char *peer_info, const char *var, struct gc_arena *gc)
 Extracts a variable from peer info, the returned string will be allocated using the supplied gc_arena.
 
unsigned int peer_info_extract_int (const char *peer_info, const char *field, const char *format, unsigned int default_value)
 Extracts the named integer variable and returns its value or default_value if it cannot be extracted.
 
unsigned int peer_info_extract_uint (const char *peer_info, const char *field)
 Extracts the named integer variable and returns its value or 0 if it cannot be extracted.
 
uint32_t extract_asymmetric_peer_id (const char *peer_info)
 Extracts the ID variable and returns its value or MAX_PEER_ID if it cannot be extracted.
 
const char * options_string_compat_lzo (const char *options, struct gc_arena *gc)
 Takes a locally produced OCC string for TLS server mode and modifies as if the option comp-lzo was enabled.
 
const tls_cipher_name_pairtls_get_cipher_name_pair (const char *cipher_name, size_t len)
 
int get_num_elements (const char *string, char delimiter)
 Returns the occurrences of 'delimiter' in a string +1 This is typically used to find out the number elements in a cipher string or similar that is separated by : like.
 

Variables

static const tls_cipher_name_pair tls_cipher_name_translation_table []
 SSL/TLS Cipher suite name translation table.
 

Function Documentation

◆ extract_asymmetric_peer_id()

uint32_t extract_asymmetric_peer_id ( const char *  peer_info)

Extracts the ID variable and returns its value or MAX_PEER_ID if it cannot be extracted.

Parameters
peer_infopeer info string to search for ID

Definition at line 115 of file ssl_util.c.

References MAX_PEER_ID, and peer_info_extract_int().

Referenced by key_method_2_read(), p2p_ncp_set_options(), and ssl_test_extract_peer_info().

◆ extract_var_peer_info()

char * extract_var_peer_info ( const char *  peer_info,
const char *  var,
struct gc_arena gc 
)

Extracts a variable from peer info, the returned string will be allocated using the supplied gc_arena.

Parameters
peer_infoThe peer's peer_info
varThe variable including =, e.g. IV_CIPHERS=
gcGC arena to allocate return value in
Returns
The content of the variable as NULL terminated string or NULL if the variable cannot be found.

Definition at line 63 of file ssl_util.c.

References gc, peer_info_extract_varstr(), and string_alloc().

Referenced by check_auth_pending_method(), get_p2p_ncp_cipher(), ssl_test_extract_peer_info(), and tls_peer_ncp_list().

◆ get_num_elements()

int get_num_elements ( const char *  string,
char  delimiter 
)

Returns the occurrences of 'delimiter' in a string +1 This is typically used to find out the number elements in a cipher string or similar that is separated by : like.

X25519:secp256r1:X448:secp512r1:secp384r1:brainpoolP384r1

Parameters
stringthe string to work on
delimiterthe delimiter to count, typically ':'
Returns
occrrences of delimiter + 1

Definition at line 355 of file ssl_util.c.

References ASSERT, and buffer::len.

Referenced by tls_ctx_set_tls_groups().

◆ options_string_compat_lzo()

const char * options_string_compat_lzo ( const char *  options,
struct gc_arena gc 
)

Takes a locally produced OCC string for TLS server mode and modifies as if the option comp-lzo was enabled.

This is to send a client in comp-lzo migrate mode the expected OCC string.

Note: This function expects the string to be in the locally generated format and does not accept arbitrary strings.

Parameters
optionsthe locally generated OCC string
gcgc_arena to allocate the returned string in
Returns
the modified string or options on error

Definition at line 127 of file ssl_util.c.

References alloc_buf_gc(), BSTR, buf_printf(), buf_write(), gc, and buffer::len.

Referenced by key_method_2_read(), and test_compat_lzo_string().

◆ peer_info_extract_int()

unsigned int peer_info_extract_int ( const char *  peer_info,
const char *  field,
const char *  format,
unsigned int  default_value 
)

Extracts the named integer variable and returns its value or default_value if it cannot be extracted.

Parameters
peer_infopeer info string to search in
fieldname of the field to be extracted including the =
formatsscanf/printf format string of the type to extract
default_valuedefault value to return if the field cannot be extracted

Definition at line 91 of file ssl_util.c.

References peer_info_extract_varstr().

Referenced by extract_asymmetric_peer_id(), peer_info_extract_uint(), and ssl_test_extract_peer_info().

◆ peer_info_extract_uint()

unsigned int peer_info_extract_uint ( const char *  peer_info,
const char *  field 
)

Extracts the named integer variable and returns its value or 0 if it cannot be extracted.

Parameters
peer_infopeer info string to search in
fieldname of the field to be extracted

Definition at line 109 of file ssl_util.c.

References peer_info_extract_int().

Referenced by extract_iv_proto(), prepare_push_reply(), ssl_test_extract_peer_info(), and tls_peer_info_ncp_ver().

◆ peer_info_extract_varstr()

static const char * peer_info_extract_varstr ( const char *  peer_info,
const char *  field 
)
static

Looks for the string field at the start of peer_info or after any new line and returns a pointer to the start of the field or NULL if not found.

Definition at line 36 of file ssl_util.c.

Referenced by extract_var_peer_info(), and peer_info_extract_int().

◆ tls_get_cipher_name_pair()

const tls_cipher_name_pair * tls_get_cipher_name_pair ( const char *  cipher_name,
size_t  len 
)

Variable Documentation

◆ tls_cipher_name_translation_table

const tls_cipher_name_pair tls_cipher_name_translation_table[]
static

SSL/TLS Cipher suite name translation table.

Definition at line 172 of file ssl_util.c.

Referenced by tls_get_cipher_name_pair().