mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-12-04 14:46:30 -05:00
Merge branch 'openssl-fixups'
This commit is contained in:
commit
7aaf0c0e86
35
src/tls.c
35
src/tls.c
@ -56,22 +56,23 @@ struct tls_tag {
|
|||||||
|
|
||||||
void tls_initialize(void)
|
void tls_initialize(void)
|
||||||
{
|
{
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
SSL_load_error_strings(); /* readable error messages */
|
SSL_load_error_strings(); /* readable error messages */
|
||||||
SSL_library_init(); /* initialize library */
|
SSL_library_init(); /* initialize library */
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void tls_shutdown(void)
|
void tls_shutdown(void)
|
||||||
{
|
{
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
ERR_free_strings();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
tls_ctx_t *tls_ctx_new(const char *cert_file, const char *key_file, const char *cipher_list)
|
tls_ctx_t *tls_ctx_new(const char *cert_file, const char *key_file, const char *cipher_list)
|
||||||
{
|
{
|
||||||
tls_ctx_t *ctx;
|
tls_ctx_t *ctx;
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x1000114fL
|
long ssl_opts = 0;
|
||||||
SSL_METHOD *method;
|
|
||||||
#else
|
|
||||||
const SSL_METHOD *method;
|
|
||||||
#endif
|
|
||||||
long ssl_opts;
|
|
||||||
|
|
||||||
if (!cert_file || !key_file || !cipher_list)
|
if (!cert_file || !key_file || !cipher_list)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -80,18 +81,26 @@ tls_ctx_t *tls_ctx_new(const char *cert_file, const char *key_file, const char *
|
|||||||
if (!ctx)
|
if (!ctx)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
method = SSLv23_server_method();
|
|
||||||
|
|
||||||
ctx->refc = 1;
|
ctx->refc = 1;
|
||||||
ctx->ctx = SSL_CTX_new(method);
|
|
||||||
|
|
||||||
ssl_opts = SSL_CTX_get_options(ctx->ctx);
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
#ifdef SSL_OP_NO_COMPRESSION
|
ctx->ctx = SSL_CTX_new(SSLv23_server_method());
|
||||||
SSL_CTX_set_options(ctx->ctx, ssl_opts|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_COMPRESSION);
|
ssl_opts = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3; // Disable SSLv2 and SSLv3
|
||||||
#else
|
#else
|
||||||
SSL_CTX_set_options(ctx->ctx, ssl_opts|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3);
|
ctx->ctx = SSL_CTX_new(TLS_server_method());
|
||||||
|
SSL_CTX_set_min_proto_version(ctx->ctx, TLS1_VERSION);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SSL_OP_NO_COMPRESSION
|
||||||
|
ssl_opts |= SSL_OP_NO_COMPRESSION; // Never use compression
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Even though this function is called set, it adds the
|
||||||
|
* flags to the already existing flags (possibly default
|
||||||
|
* flags already set by OpenSSL)!
|
||||||
|
* Calling SSL_CTX_get_options is not needed here, therefore.
|
||||||
|
*/
|
||||||
|
SSL_CTX_set_options(ctx->ctx, ssl_opts);
|
||||||
do {
|
do {
|
||||||
if (SSL_CTX_use_certificate_chain_file(ctx->ctx, cert_file) <= 0) {
|
if (SSL_CTX_use_certificate_chain_file(ctx->ctx, cert_file) <= 0) {
|
||||||
ICECAST_LOG_WARN("Invalid cert file %s", cert_file);
|
ICECAST_LOG_WARN("Invalid cert file %s", cert_file);
|
||||||
|
Loading…
Reference in New Issue
Block a user