summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2018-05-21 14:05:50 +0200
committerJohn Crispin <john@phrozen.org>2018-05-22 20:37:30 +0200
commit5322f9db23b69fdc2b4760a6cfd67848a11818a4 (patch)
treea6a56f099a39bb19aa281095f4795efefcf9dd67
parente8a14691313d72bac27f9060bc536cf2ad23256b (diff)
downloadustream-ssl-5322f9db23b69fdc2b4760a6cfd67848a11818a4.tar.gz
mbedtls: Fix setting allowed cipher suites
The cipher suites should be set after the default settings are done, otherwise the settings will be overwritten with the defaults later on again. Also make the list of supported cipher suites match what Chrome tries to use. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--ustream-mbedtls.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/ustream-mbedtls.c b/ustream-mbedtls.c
index 0b747d2..9b22ad2 100644
--- a/ustream-mbedtls.c
+++ b/ustream-mbedtls.c
@@ -87,21 +87,17 @@ static int _urandom(void *ctx, unsigned char *out, size_t len)
}
#define TLS_DEFAULT_CIPHERS \
- TLS_CIPHER(AES_256_CBC_SHA256) \
- TLS_CIPHER(AES_256_GCM_SHA384) \
- TLS_CIPHER(AES_256_CBC_SHA) \
- TLS_CIPHER(CAMELLIA_256_CBC_SHA256) \
- TLS_CIPHER(CAMELLIA_256_CBC_SHA) \
- TLS_CIPHER(AES_128_CBC_SHA256) \
TLS_CIPHER(AES_128_GCM_SHA256) \
+ TLS_CIPHER(AES_256_GCM_SHA384) \
TLS_CIPHER(AES_128_CBC_SHA) \
- TLS_CIPHER(CAMELLIA_128_CBC_SHA256) \
- TLS_CIPHER(CAMELLIA_128_CBC_SHA) \
+ TLS_CIPHER(AES_256_CBC_SHA) \
TLS_CIPHER(3DES_EDE_CBC_SHA)
static const int default_ciphersuites_nodhe[] =
{
#define TLS_CIPHER(v) \
+ MBEDTLS_TLS_ECDHE_ECDSA_WITH_##v, \
+ MBEDTLS_TLS_ECDHE_RSA_WITH_##v, \
MBEDTLS_TLS_RSA_WITH_##v,
TLS_DEFAULT_CIPHERS
#undef TLS_CIPHER
@@ -111,6 +107,8 @@ static const int default_ciphersuites_nodhe[] =
static const int default_ciphersuites[] =
{
#define TLS_CIPHER(v) \
+ MBEDTLS_TLS_ECDHE_ECDSA_WITH_##v, \
+ MBEDTLS_TLS_ECDHE_RSA_WITH_##v, \
MBEDTLS_TLS_DHE_RSA_WITH_##v, \
MBEDTLS_TLS_RSA_WITH_##v,
TLS_DEFAULT_CIPHERS
@@ -147,19 +145,18 @@ __ustream_ssl_context_new(bool server)
conf = &ctx->conf;
mbedtls_ssl_config_init(conf);
- if (server) {
- mbedtls_ssl_conf_ciphersuites(conf, default_ciphersuites_nodhe);
- ep = MBEDTLS_SSL_IS_SERVER;
- } else {
- mbedtls_ssl_conf_ciphersuites(conf, default_ciphersuites);
- ep = MBEDTLS_SSL_IS_CLIENT;
- }
+ ep = server ? MBEDTLS_SSL_IS_SERVER : MBEDTLS_SSL_IS_CLIENT;
mbedtls_ssl_config_defaults(conf, ep, MBEDTLS_SSL_TRANSPORT_STREAM,
MBEDTLS_SSL_PRESET_DEFAULT);
mbedtls_ssl_conf_authmode(conf, MBEDTLS_SSL_VERIFY_NONE);
mbedtls_ssl_conf_rng(conf, _urandom, NULL);
+ if (server)
+ mbedtls_ssl_conf_ciphersuites(conf, default_ciphersuites_nodhe);
+ else
+ mbedtls_ssl_conf_ciphersuites(conf, default_ciphersuites);
+
#if defined(MBEDTLS_SSL_CACHE_C)
mbedtls_ssl_conf_session_cache(conf, &ctx->cache,
mbedtls_ssl_cache_get,