OpenVPN
Macros | Typedefs | Functions | Variables
crypto_openssl.h File Reference
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
Include dependency graph for crypto_openssl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define OPENVPN_MAX_IV_LENGTH   EVP_MAX_IV_LENGTH
 Maximum length of an IV. More...
 
#define OPENVPN_MODE_CBC   EVP_CIPH_CBC_MODE
 Cipher is in CBC mode. More...
 
#define OPENVPN_MODE_OFB   EVP_CIPH_OFB_MODE
 Cipher is in OFB mode. More...
 
#define OPENVPN_MODE_CFB   EVP_CIPH_CFB_MODE
 Cipher is in CFB mode. More...
 
#define OPENVPN_MODE_GCM   EVP_CIPH_GCM_MODE
 Cipher is in GCM mode. More...
 
#define OPENVPN_OP_ENCRYPT   1
 Cipher should encrypt. More...
 
#define OPENVPN_OP_DECRYPT   0
 Cipher should decrypt. More...
 
#define DES_KEY_LENGTH   8
 
#define MD4_DIGEST_LENGTH   16
 
#define crypto_msg(flags, ...)
 Retrieve any OpenSSL errors, then print the supplied error message. More...
 

Typedefs

typedef EVP_CIPHER_CTX cipher_ctx_t
 Generic cipher context. More...
 
typedef EVP_MD_CTX md_ctx_t
 Generic message digest context. More...
 
typedef HMAC_CTX hmac_ctx_t
 Generic HMAC context. More...
 
typedef void provider_t
 

Functions

void crypto_print_openssl_errors (const unsigned int flags)
 Retrieve any occurred OpenSSL errors and print those errors. More...
 
EVP_PKEY * engine_load_key (const char *file, SSL_CTX *ctx)
 Load a key file from an engine. More...
 

Variables

const typedef EVP_CIPHER evp_cipher_type
 
const typedef EVP_MD evp_md_type
 

Macro Definition Documentation

◆ crypto_msg

#define crypto_msg (   flags,
  ... 
)
Value:
do { \
crypto_print_openssl_errors(nonfatal(flags)); \
msg((flags), __VA_ARGS__); \
} while (false)

Retrieve any OpenSSL errors, then print the supplied error message.

This is just a convenience wrapper for often occurring situations.

Parameters
flagsFlags to indicate error type and priority.
formatFormat string to print.
formatargs (optional) arguments for the format string.

Definition at line 115 of file crypto_openssl.h.

◆ DES_KEY_LENGTH

#define DES_KEY_LENGTH   8

Definition at line 94 of file crypto_openssl.h.

◆ MD4_DIGEST_LENGTH

#define MD4_DIGEST_LENGTH   16

Definition at line 95 of file crypto_openssl.h.

◆ OPENVPN_MAX_IV_LENGTH

#define OPENVPN_MAX_IV_LENGTH   EVP_MAX_IV_LENGTH

Maximum length of an IV.

Definition at line 74 of file crypto_openssl.h.

◆ OPENVPN_MODE_CBC

#define OPENVPN_MODE_CBC   EVP_CIPH_CBC_MODE

Cipher is in CBC mode.

Definition at line 77 of file crypto_openssl.h.

◆ OPENVPN_MODE_CFB

#define OPENVPN_MODE_CFB   EVP_CIPH_CFB_MODE

Cipher is in CFB mode.

Definition at line 83 of file crypto_openssl.h.

◆ OPENVPN_MODE_GCM

#define OPENVPN_MODE_GCM   EVP_CIPH_GCM_MODE

Cipher is in GCM mode.

Definition at line 86 of file crypto_openssl.h.

◆ OPENVPN_MODE_OFB

#define OPENVPN_MODE_OFB   EVP_CIPH_OFB_MODE

Cipher is in OFB mode.

Definition at line 80 of file crypto_openssl.h.

◆ OPENVPN_OP_DECRYPT

#define OPENVPN_OP_DECRYPT   0

Cipher should decrypt.

Definition at line 92 of file crypto_openssl.h.

◆ OPENVPN_OP_ENCRYPT

#define OPENVPN_OP_ENCRYPT   1

Cipher should encrypt.

Definition at line 89 of file crypto_openssl.h.

Typedef Documentation

◆ cipher_ctx_t

typedef EVP_CIPHER_CTX cipher_ctx_t

Generic cipher context.

Definition at line 41 of file crypto_openssl.h.

◆ hmac_ctx_t

typedef HMAC_CTX hmac_ctx_t

Generic HMAC context.

Definition at line 48 of file crypto_openssl.h.

◆ md_ctx_t

typedef EVP_MD_CTX md_ctx_t

Generic message digest context.

Definition at line 44 of file crypto_openssl.h.

◆ provider_t

typedef void provider_t

Definition at line 51 of file crypto_openssl.h.

Function Documentation

◆ crypto_print_openssl_errors()

void crypto_print_openssl_errors ( const unsigned int  flags)

Retrieve any occurred OpenSSL errors and print those errors.

Note that this function uses the not thread-safe OpenSSL error API.

Parameters
flagsFlags to indicate error type and priority.

Definition at line 240 of file crypto_openssl.c.

References D_CRYPT_ERRORS, and msg.

Referenced by tls_ctx_load_cert_file().

◆ engine_load_key()

EVP_PKEY* engine_load_key ( const char *  file,
SSL_CTX *  ctx 
)

Load a key file from an engine.

Parameters
fileThe engine file to load
uiThe UI method for the password prompt
dataThe data to pass to the UI method
Returns
The private key if successful or NULL if not

Definition at line 1384 of file crypto_openssl.c.

References crypto_msg, M_FATAL, and M_INFO.

Referenced by tls_ctx_load_priv_file().

Variable Documentation

◆ evp_cipher_type

const typedef EVP_CIPHER evp_cipher_type

◆ evp_md_type

const typedef EVP_MD evp_md_type
nonfatal
static unsigned int nonfatal(const unsigned int err)
Convert fatal errors to nonfatal, don't touch other errors.
Definition: error.h:384