"Fossies" - the Fresh Open Source Software Archive

Member "mariadb-connector-c-3.0.8-src/include/ma_tls.h" (18 Dec 2018, 4256 Bytes) of package /linux/misc/mariadb-connector-c-3.0.8-src.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the last Fossies "Diffs" side-by-side code changes report for "ma_tls.h": 3.0.3-src_vs_3.0.4-src.

    1 #ifndef _ma_tls_h_
    2 #define _ma_tls_h_
    3 
    4 enum enum_pvio_tls_type {
    5   SSL_TYPE_DEFAULT=0,
    6 #ifdef _WIN32
    7   SSL_TYPE_SCHANNEL,
    8 #endif
    9   SSL_TYPE_OPENSSL,
   10   SSL_TYPE_GNUTLS
   11 };
   12 
   13 #define PROTOCOL_SSLV3    0
   14 #define PROTOCOL_TLS_1_0  1
   15 #define PROTOCOL_TLS_1_1  2
   16 #define PROTOCOL_TLS_1_2  3
   17 #define PROTOCOL_TLS_1_3  4
   18 #define PROTOCOL_UNKNOWN  5
   19 #define PROTOCOL_MAX PROTOCOL_TLS_1_3
   20 
   21 #define TLS_VERSION_LENGTH 64
   22 extern char tls_library_version[TLS_VERSION_LENGTH];
   23 
   24 typedef struct st_ma_pvio_tls {
   25   void *data;
   26   MARIADB_PVIO *pvio;
   27   void *ssl;
   28 } MARIADB_TLS;
   29 
   30 /* Function prototypes */
   31 
   32 /* ma_tls_start
   33    initializes the ssl library
   34    Parameter:
   35      errmsg      pointer to error message buffer
   36      errmsg_len  length of error message buffer
   37    Returns:
   38      0           success
   39      1           if an error occurred
   40    Notes:
   41      On success the global variable ma_tls_initialized will be set to 1
   42 */
   43 int ma_tls_start(char *errmsg, size_t errmsg_len);
   44 
   45 /* ma_tls_end
   46    unloads/deinitializes ssl library and unsets global variable
   47    ma_tls_initialized
   48 */
   49 void ma_tls_end(void);
   50 
   51 /* ma_tls_init
   52    creates a new SSL structure for a SSL connection and loads
   53    client certificates
   54 
   55    Parameters:
   56      MYSQL        a mysql structure
   57    Returns:
   58      void *       a pointer to internal SSL structure
   59 */
   60 void * ma_tls_init(MYSQL *mysql);
   61 
   62 /* ma_tls_connect
   63    performs SSL handshake
   64    Parameters:
   65      MARIADB_TLS   MariaDB SSL container
   66    Returns:
   67      0             success
   68      1             error
   69 */
   70 my_bool ma_tls_connect(MARIADB_TLS *ctls);
   71 
   72 /* ma_tls_read
   73    reads up to length bytes from socket
   74    Parameters:
   75      ctls         MariaDB SSL container
   76      buffer       read buffer
   77      length       buffer length
   78    Returns:
   79      0-n          bytes read
   80      -1           if an error occurred
   81 */
   82 ssize_t ma_tls_read(MARIADB_TLS *ctls, const uchar* buffer, size_t length);
   83 
   84 /* ma_tls_write
   85    write buffer to socket
   86    Parameters:
   87      ctls         MariaDB SSL container
   88      buffer       write buffer
   89      length       buffer length
   90    Returns:
   91      0-n          bytes written
   92      -1           if an error occurred
   93 */
   94 ssize_t ma_tls_write(MARIADB_TLS *ctls, const uchar* buffer, size_t length);
   95 
   96 /* ma_tls_close
   97    closes SSL connection and frees SSL structure which was previously
   98    created by ma_tls_init call
   99    Parameters:
  100      MARIADB_TLS  MariaDB SSL container
  101    Returns:
  102      0            success
  103      1            error
  104 */
  105 my_bool ma_tls_close(MARIADB_TLS *ctls);
  106 
  107 /* ma_tls_verify_server_cert
  108    validation check of server certificate
  109    Parameter:
  110      MARIADB_TLS  MariaDB SSL container
  111    Returns:
  112      ß            success
  113      1            error
  114 */
  115 int ma_tls_verify_server_cert(MARIADB_TLS *ctls);
  116 
  117 /* ma_tls_get_cipher
  118    returns cipher for current ssl connection
  119    Parameter:
  120      MARIADB_TLS  MariaDB SSL container
  121    Returns: 
  122      cipher in use or
  123      NULL on error
  124 */
  125 const char *ma_tls_get_cipher(MARIADB_TLS *ssl);
  126 
  127 /* ma_tls_get_finger_print
  128    returns SHA1 finger print of server certificate
  129    Parameter:
  130      MARIADB_TLS  MariaDB SSL container
  131      fp           buffer for fingerprint
  132      fp_len       buffer length
  133    Returns:
  134      actual size of finger print
  135 */
  136 unsigned int ma_tls_get_finger_print(MARIADB_TLS *ctls, char *fp, unsigned int fp_len);
  137 
  138 /* ma_tls_get_protocol_version 
  139    returns protocol version number in use
  140    Parameter:
  141      MARIADB_TLS    MariaDB SSL container
  142    Returns:
  143      protocol number
  144 */
  145 int ma_tls_get_protocol_version(MARIADB_TLS *ctls);
  146 const char *ma_pvio_tls_get_protocol_version(MARIADB_TLS *ctls);
  147 int ma_pvio_tls_get_protocol_version_id(MARIADB_TLS *ctls);
  148 
  149 /* Function prototypes */
  150 MARIADB_TLS *ma_pvio_tls_init(MYSQL *mysql);
  151 my_bool ma_pvio_tls_connect(MARIADB_TLS *ctls);
  152 ssize_t ma_pvio_tls_read(MARIADB_TLS *ctls, const uchar *buffer, size_t length);
  153 ssize_t ma_pvio_tls_write(MARIADB_TLS *ctls, const uchar *buffer, size_t length);
  154 my_bool ma_pvio_tls_close(MARIADB_TLS *ctls);
  155 int ma_pvio_tls_verify_server_cert(MARIADB_TLS *ctls);
  156 const char *ma_pvio_tls_cipher(MARIADB_TLS *ctls);
  157 my_bool ma_pvio_tls_check_fp(MARIADB_TLS *ctls, const char *fp, const char *fp_list);
  158 my_bool ma_pvio_start_ssl(MARIADB_PVIO *pvio);
  159 void ma_pvio_tls_end();
  160 
  161 #endif /* _ma_tls_h_ */