| /* |
| copyright: Boaz segev, 2016 |
| license: MIT |
| |
| Feel free to copy, use and enjoy according to the license provided. |
| */ |
| #ifndef TLS_LIB_SERVER |
| #define TLS_LIB_SERVER |
| |
| /** \file |
| NOT IMPLEMENTED - this is a stub version, that isn't implemented yet! No SSL/TLS |
| will be added to the server. |
| |
| This extension implements SSL/TLS connections for lib-server. This is done using |
| lib-server's read/write hooks and a wrapper protocol - these techniques can be |
| used to add other transport and/or protocol negotiation layers as well. |
| |
| This extension requires OpenSSL to be installed and linked. The OpenSSL header |
| file should be included BEFORE this header file. If OpenSSL isn't available, a |
| warning will be displayed, but COMPILATION WILL CONTINUE (unless set to fail). |
| |
| The choice for a default quite failure was chosen so that this extension could |
| be stored in the project folder even when not in use. |
| */ |
| |
| /* set to 1 to use OpenSSL or 0 to compile without encryption */ |
| #define USE_TLS_LIB_SERVER 1 |
| |
| #if USE_TLS_LIB_SERVER >= 1 |
| /* We have OpenSSL - let's do this :-) */ |
| #include <openssl/crypto.h> |
| #include <openssl/ssl.h> |
| #include "lib-server.h" |
| |
| /** |
| NOT IMPLEMENTED - this is a stub version, that isn't implemented yet! No SSL/TLS |
| will be added to the server. |
| |
| The TLSServer API is available using the global `TLSServer` object. |
| |
| This API adds SSL/TLS functionality to lib-server by establishing Read/Write |
| hooks for SSL/TLS enabled connections and managing protocol entry to make sure |
| the server's default protocol isn't called upon before the SSL/TLS handshake is |
| complete. |
| |
| This extension requires OpenSSL to be installed and linked. The OpenSSL header |
| file should be included BEFORE this header file. If OpenSSL isn't available, a |
| warning will be displayed, but COMPILATION WILL CONTINUE (unless set to fail). |
| |
| Use: |
| |
| // from within the server's on_init callback (or as the on_init callback): |
| TLSServer.init_server(srv); |
| |
| */ |
| |
| struct TLSServer_API___ { |
| /** Used to initialize the TLS/SSL hooks from within the on_init callback. */ |
| void (*init_server)(server_pt srv); |
| /** Used to update the sever settings with a new TLS/SSL Protocol and hooks. |
| * (this will also setup the on_init callback and make sure that the original |
| * callback is called as well). |
| */ |
| void (*update_settings)(struct ServerSettings* settings); |
| } TLSServer; |
| |
| /* TLS-Lib-Server: Not implememnted */ |
| #warning TLS-Lib-Server: Not implememnted. |
| |
| #endif /* USE_TLS_LIB_SERVER */ |
| |
| #endif /* TLS_LIB_SERVER */ |