diff options
author | Nokis Mavrogiannopoulos | 2007-12-15 13:26:01 +0000 |
---|---|---|
committer | Nokis Mavrogiannopoulos | 2007-12-15 13:26:01 +0000 |
commit | 9f2df441fe075c3391560561e0098f663d83d471 (patch) | |
tree | 721754cdff0987366b835feb26b4b48e89ec0542 /src/gnutls_config.c | |
parent | 77bc2be09cb5b7e0f01502d8b33f818ddfeaec47 (diff) |
Initial support for openpgp keys
Diffstat (limited to 'src/gnutls_config.c')
-rw-r--r-- | src/gnutls_config.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/gnutls_config.c b/src/gnutls_config.c index 8d6308a..4dccd08 100644 --- a/src/gnutls_config.c +++ b/src/gnutls_config.c | |||
@@ -202,6 +202,85 @@ const char *mgs_set_key_file(cmd_parms * parms, void *dummy, | |||
202 | return NULL; | 202 | return NULL; |
203 | } | 203 | } |
204 | 204 | ||
205 | const char *mgs_set_pgpcert_file(cmd_parms * parms, void *dummy, | ||
206 | const char *arg) | ||
207 | { | ||
208 | int ret; | ||
209 | gnutls_datum_t data; | ||
210 | const char *file; | ||
211 | apr_pool_t *spool; | ||
212 | mgs_srvconf_rec *sc = | ||
213 | (mgs_srvconf_rec *) ap_get_module_config(parms->server-> | ||
214 | module_config, | ||
215 | &gnutls_module); | ||
216 | apr_pool_create(&spool, parms->pool); | ||
217 | |||
218 | file = ap_server_root_relative(spool, arg); | ||
219 | |||
220 | if (load_datum_from_file(spool, file, &data) != 0) { | ||
221 | return apr_psprintf(parms->pool, "GnuTLS: Error Reading " | ||
222 | "Certificate '%s'", file); | ||
223 | } | ||
224 | |||
225 | ret = gnutls_openpgp_crt_init( &sc->cert_pgp); | ||
226 | if (ret < 0) { | ||
227 | return apr_psprintf(parms->pool, "GnuTLS: Failed to Init " | ||
228 | "PGP Certificate: (%d) %s", ret, | ||
229 | gnutls_strerror(ret)); | ||
230 | } | ||
231 | |||
232 | |||
233 | ret = | ||
234 | gnutls_openpgp_crt_import(sc->cert_pgp, &data, GNUTLS_OPENPGP_FMT_BASE64); | ||
235 | if (ret < 0) { | ||
236 | return apr_psprintf(parms->pool, "GnuTLS: Failed to Import " | ||
237 | "PGP Certificate '%s': (%d) %s", file, ret, | ||
238 | gnutls_strerror(ret)); | ||
239 | } | ||
240 | |||
241 | apr_pool_destroy(spool); | ||
242 | return NULL; | ||
243 | } | ||
244 | |||
245 | const char *mgs_set_pgpkey_file(cmd_parms * parms, void *dummy, | ||
246 | const char *arg) | ||
247 | { | ||
248 | int ret; | ||
249 | gnutls_datum_t data; | ||
250 | const char *file; | ||
251 | apr_pool_t *spool; | ||
252 | mgs_srvconf_rec *sc = | ||
253 | (mgs_srvconf_rec *) ap_get_module_config(parms->server-> | ||
254 | module_config, | ||
255 | &gnutls_module); | ||
256 | apr_pool_create(&spool, parms->pool); | ||
257 | |||
258 | file = ap_server_root_relative(spool, arg); | ||
259 | |||
260 | if (load_datum_from_file(spool, file, &data) != 0) { | ||
261 | return apr_psprintf(parms->pool, "GnuTLS: Error Reading " | ||
262 | "Private Key '%s'", file); | ||
263 | } | ||
264 | |||
265 | ret = gnutls_openpgp_privkey_init(&sc->privkey_pgp); | ||
266 | if (ret < 0) { | ||
267 | return apr_psprintf(parms->pool, "GnuTLS: Failed to initialize" | ||
268 | ": (%d) %s", ret, gnutls_strerror(ret)); | ||
269 | } | ||
270 | |||
271 | ret = | ||
272 | gnutls_openpgp_privkey_import(sc->privkey_pgp, &data, | ||
273 | GNUTLS_OPENPGP_FMT_BASE64, NULL, 0); | ||
274 | if (ret != 0) { | ||
275 | return apr_psprintf(parms->pool, "GnuTLS: Failed to Import " | ||
276 | "PGP Private Key '%s': (%d) %s", file, ret, | ||
277 | gnutls_strerror(ret)); | ||
278 | } | ||
279 | apr_pool_destroy(spool); | ||
280 | return NULL; | ||
281 | } | ||
282 | |||
283 | |||
205 | const char *mgs_set_srp_tpasswd_file(cmd_parms * parms, void *dummy, | 284 | const char *mgs_set_srp_tpasswd_file(cmd_parms * parms, void *dummy, |
206 | const char *arg) | 285 | const char *arg) |
207 | { | 286 | { |
@@ -350,6 +429,38 @@ const char *mgs_set_client_ca_file(cmd_parms * parms, void *dummy, | |||
350 | return NULL; | 429 | return NULL; |
351 | } | 430 | } |
352 | 431 | ||
432 | const char *mgs_set_keyring_file(cmd_parms * parms, void *dummy, | ||
433 | const char *arg) | ||
434 | { | ||
435 | int rv; | ||
436 | const char *file; | ||
437 | apr_pool_t *spool; | ||
438 | gnutls_datum_t data; | ||
439 | |||
440 | mgs_srvconf_rec *sc = | ||
441 | (mgs_srvconf_rec *) ap_get_module_config(parms->server-> | ||
442 | module_config, | ||
443 | &gnutls_module); | ||
444 | apr_pool_create(&spool, parms->pool); | ||
445 | |||
446 | file = ap_server_root_relative(spool, arg); | ||
447 | |||
448 | if (load_datum_from_file(spool, file, &data) != 0) { | ||
449 | return apr_psprintf(parms->pool, "GnuTLS: Error Reading " | ||
450 | "Keyring File '%s'", file); | ||
451 | } | ||
452 | |||
453 | rv = gnutls_openpgp_keyring_import(sc->pgp_list, &data, GNUTLS_OPENPGP_FMT_BASE64); | ||
454 | if (rv < 0) { | ||
455 | return apr_psprintf(parms->pool, "GnuTLS: Failed to load " | ||
456 | "Keyring File '%s': (%d) %s", file, rv, | ||
457 | gnutls_strerror(rv)); | ||
458 | } | ||
459 | |||
460 | apr_pool_destroy(spool); | ||
461 | return NULL; | ||
462 | } | ||
463 | |||
353 | const char *mgs_set_enabled(cmd_parms * parms, void *dummy, | 464 | const char *mgs_set_enabled(cmd_parms * parms, void *dummy, |
354 | const char *arg) | 465 | const char *arg) |
355 | { | 466 | { |