SSL_get_ex_data(ssl, dovecot_ssl_extdata_index);
e_error(ssl_io->event, "Diffie-Hellman key exchange requested, "
- "but no DH parameters provided. Set ssl_dh=</path/to/dh.pem");
+ "but no DH parameters provided. Set ssl_dh_file=/path/to/dh.pem");
return NULL;
}
#endif
BIO *bio;
EVP_PKEY *pkey = NULL;
- bio = BIO_new_mem_buf(set->dh, strlen(set->dh));
+ bio = BIO_new_mem_buf(set->dh.content, strlen(set->dh.content));
if (bio == NULL) {
*error_r = t_strdup_printf("BIO_new_mem_buf() failed: %s",
{
EVP_PKEY *pkey_dh;
int ret = 0;
- if (*set->dh == '\0') {
+ if (*set->dh.content == '\0') {
return 0;
}
if (openssl_iostream_load_dh(set, &pkey_dh, error_r) < 0)
#endif
{
*error_r = t_strdup_printf(
- "Can't load DH parameters (ssl_dh setting): %s",
+ "Can't load DH parameters (ssl_dh_file setting): %s",
openssl_iostream_key_load_error());
ret = -1;
}
return -1;
}
- if (set->dh != NULL && *set->dh != '\0') {
+ if (set->dh.content != NULL && *set->dh.content != '\0') {
if (ssl_iostream_ctx_use_dh(ctx, set, error_r) < 0)
return -1;
}
const struct ssl_iostream_settings *set ATTR_UNUSED,
const char **error_r ATTR_UNUSED)
{
-
#ifdef SSL_CTX_set_tmp_dh_callback
- if (set->dh == NULL || *set->dh == '\0')
+ if (set->dh.content == NULL || *set->dh.content == '\0')
SSL_CTX_set_tmp_dh_callback(ssl_ctx, ssl_tmp_dh_callback);
#endif
/* In the non-recommended situation where ECDH cipher suites are being
test_set->ca = test_ca_cert;
test_set->cert.cert.content = test_server_cert;
test_set->cert.key.content = test_server_key;
- test_set->dh = test_server_dh;
+ test_set->dh.content = test_server_dh;
test_set->skip_crl_check = TRUE;
}
!quick_strcmp(set1->cipher_list, set2->cipher_list) ||
!quick_strcmp(set1->ciphersuites, set2->ciphersuites) ||
!quick_strcmp(set1->curve_list, set2->curve_list) ||
- !quick_strcmp(set1->dh, set2->dh) ||
+ !quick_strcmp(set1->dh.content, set2->dh.content) ||
!quick_strcmp(set1->cert_username_field,
set2->cert_username_field) ||
!quick_strcmp(set1->crypto_device, set2->crypto_device))
/* alternative cert is for providing certificate using
different key algorithm */
struct ssl_iostream_cert alt_cert;
- const char *dh;
+ struct settings_file dh;
/* Field which contains the username returned by
ssl_iostream_get_peer_username() */
const char *cert_username_field;
DEF(FILE, ssl_alt_cert_file),
DEF(FILE, ssl_alt_key_file),
DEF(STR, ssl_key_password),
- DEF(STR, ssl_dh),
+ DEF(FILE, ssl_dh_file),
DEF(STR, ssl_cert_username_field),
DEF(BOOL, ssl_require_crl),
.ssl_alt_cert_file = "",
.ssl_alt_key_file = "",
.ssl_key_password = "",
- .ssl_dh = "",
+ .ssl_dh_file = "",
.ssl_cert_username_field = "commonName",
.ssl_require_crl = TRUE,
set->pool, &set->alt_cert.key);
set->alt_cert.key_password = ssl_server_set->ssl_key_password;
}
- set->dh = ssl_server_set->ssl_dh;
+ settings_file_get(ssl_server_set->ssl_dh_file, set->pool, &set->dh);
set->cert_username_field =
ssl_server_set->ssl_cert_username_field;
set->prefer_server_ciphers = ssl_server_set->ssl_prefer_server_ciphers;
const char *ssl_key_file;
const char *ssl_alt_key_file;
const char *ssl_key_password;
- const char *ssl_dh;
+ const char *ssl_dh_file;
const char *ssl_cert_username_field;
bool ssl_require_crl;