summaryrefslogtreecommitdiffstatsabout
path: root/src/gnutls_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnutls_config.c')
-rw-r--r--src/gnutls_config.c49
1 files changed, 46 insertions, 3 deletions
diff --git a/src/gnutls_config.c b/src/gnutls_config.c
index 697dae1..22e8fbc 100644
--- a/src/gnutls_config.c
+++ b/src/gnutls_config.c
@@ -54,12 +54,34 @@ static int load_datum_from_file(apr_pool_t * pool,
54const char *mgs_set_dh_file(cmd_parms * parms, void *dummy, 54const char *mgs_set_dh_file(cmd_parms * parms, void *dummy,
55 const char *arg) 55 const char *arg)
56{ 56{
57 int ret;
58 gnutls_datum_t data;
59 const char *file;
60 apr_pool_t *spool;
57 mgs_srvconf_rec *sc = 61 mgs_srvconf_rec *sc =
58 (mgs_srvconf_rec *) ap_get_module_config(parms->server-> 62 (mgs_srvconf_rec *) ap_get_module_config(parms->server->
59 module_config, 63 module_config,
60 &gnutls_module); 64 &gnutls_module);
61 65
62 sc->dh_params_file = ap_server_root_relative(parms->pool, arg); 66 apr_pool_create(&spool, parms->pool);
67
68 file = ap_server_root_relative(spool, arg);
69
70 if (load_datum_from_file(spool, file, &data) != 0) {
71 return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
72 "DH params '%s'", file);
73 }
74
75 gnutls_dh_params_init(&sc->dh_params);
76 ret =
77 gnutls_dh_params_import_pkcs3(sc->dh_params, &data, GNUTLS_X509_FMT_PEM);
78 if (ret != 0) {
79 return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
80 "DH params '%s': (%d) %s", file, ret,
81 gnutls_strerror(ret));
82 }
83
84 apr_pool_destroy(spool);
63 85
64 return NULL; 86 return NULL;
65} 87}
@@ -67,13 +89,34 @@ const char *mgs_set_dh_file(cmd_parms * parms, void *dummy,
67const char *mgs_set_rsa_export_file(cmd_parms * parms, void *dummy, 89const char *mgs_set_rsa_export_file(cmd_parms * parms, void *dummy,
68 const char *arg) 90 const char *arg)
69{ 91{
92 int ret;
93 gnutls_datum_t data;
94 const char *file;
95 apr_pool_t *spool;
70 mgs_srvconf_rec *sc = 96 mgs_srvconf_rec *sc =
71 (mgs_srvconf_rec *) ap_get_module_config(parms->server-> 97 (mgs_srvconf_rec *) ap_get_module_config(parms->server->
72 module_config, 98 module_config,
73 &gnutls_module); 99 &gnutls_module);
74 100
75 sc->rsa_params_file = ap_server_root_relative(parms->pool, arg); 101 apr_pool_create(&spool, parms->pool);
102
103 file = ap_server_root_relative(spool, arg);
104
105 if (load_datum_from_file(spool, file, &data) != 0) {
106 return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
107 "RSA params '%s'", file);
108 }
109
110 gnutls_rsa_params_init(&sc->rsa_params);
111 ret =
112 gnutls_rsa_params_import_pkcs1(sc->rsa_params, &data, GNUTLS_X509_FMT_PEM);
113 if (ret != 0) {
114 return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
115 "RSA params '%s': (%d) %s", file, ret,
116 gnutls_strerror(ret));
117 }
76 118
119 apr_pool_destroy(spool);
77 return NULL; 120 return NULL;
78} 121}
79 122
@@ -103,7 +146,7 @@ const char *mgs_set_cert_file(cmd_parms * parms, void *dummy,
103 gnutls_x509_crt_import(sc->cert_x509, &data, GNUTLS_X509_FMT_PEM); 146 gnutls_x509_crt_import(sc->cert_x509, &data, GNUTLS_X509_FMT_PEM);
104 if (ret != 0) { 147 if (ret != 0) {
105 return apr_psprintf(parms->pool, "GnuTLS: Failed to Import " 148 return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
106 "Certificate'%s': (%d) %s", file, ret, 149 "Certificate '%s': (%d) %s", file, ret,
107 gnutls_strerror(ret)); 150 gnutls_strerror(ret));
108 } 151 }
109 152