+ /* Initialize config */
+ conf = Memory_safeCalloc(1, sizeof(mbedtls_ssl_config));
+
+ if (!conf)
+ Log_fatal("Out of memory");
+
+ mbedtls_ssl_config_init(conf);
+
+ if((rc = mbedtls_ssl_config_defaults(conf,
+ MBEDTLS_SSL_IS_SERVER,
+ MBEDTLS_SSL_TRANSPORT_STREAM,
+ MBEDTLS_SSL_PRESET_DEFAULT)) != 0)
+ Log_fatal("mbedtls_ssl_config_defaults returned %d", rc);
+
+ mbedtls_ssl_conf_authmode(conf, MBEDTLS_SSL_VERIFY_OPTIONAL);
+#ifdef USE_MBEDTLS_HAVEGE
+ mbedtls_ssl_conf_rng(conf, HAVEGE_RAND, &hs);
+#else
+ mbedtls_ssl_conf_rng(conf, urandom_bytes, NULL);
+#endif
+ mbedtls_ssl_conf_dbg(conf, pssl_debug, NULL);
+
+ mbedtls_ssl_conf_ciphersuites(conf, (const int*)&ciphers);
+
+ mbedtls_ssl_conf_ca_chain(conf, &certificate, NULL);
+
+ if((rc = mbedtls_ssl_conf_own_cert(conf, &certificate, &key)) != 0)
+ Log_fatal("mbedtls_ssl_conf_own_cert returned %d", rc);
+
+ if((rc = mbedtls_ssl_conf_dh_param(conf, my_dhm_P, my_dhm_G)) != 0)
+ Log_fatal("mbedtls_ssl_conf_dh_param returned %d", rc);
+