#include "server.h"
#include "serv_crypto.h"
#include "sysdep_decls.h"
-#include "serv_extensions.h"
#include "citadel.h"
#include "config.h"
+#include "ctdl_module.h"
+/* TODO: should we use the standard module init stuff to start this? */
+/* TODO: should we register an event handler to call destruct_ssl? */
+
#ifdef HAVE_OPENSSL
SSL_CTX *ssl_ctx; /* SSL context */
pthread_mutex_t **SSLCritters; /* Things needing locking */
return (unsigned long) pthread_self();
}
+void destruct_ssl(void)
+{
+ int a;
+ CtdlUnregisterProtoHook(cmd_stls, "STLS");
+ CtdlUnregisterProtoHook(cmd_gtls, "GTLS");
+ for (a = 0; a < CRYPTO_num_locks(); a++)
+ free(SSLCritters[a]);
+ free (SSLCritters);
+}
+
void init_ssl(void)
{
SSL_METHOD *ssl_method;
/* Get our certificates in order.
* First, create the key/cert directory if it's not there already...
*/
- mkdir(ctdl_ssl_dir, 0700);
+ mkdir(ctdl_key_dir, 0700);
/*
* Generate a key pair if we don't have one.
* there is the possibility that the key was already on disk
* and we didn't just generate it now.
*/
- fp = fopen(file_crpt_file_csr, "r");
+ fp = fopen(file_crpt_file_key, "r");
if (fp) {
rsa = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL);
fclose(fp);
/* Same deal as before: always read the key from disk because
* it may or may not have just been generated.
*/
- fp = fopen(file_crpt_file_cer, "r");
+ fp = fopen(file_crpt_file_key, "r");
if (fp) {
rsa = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL);
fclose(fp);
EVP_PKEY_assign_RSA(pk, rsa);
}
- fp = fopen(file_crpt_file_cer, "r");
+ fp = fopen(file_crpt_file_csr, "r");
if (fp) {
req = PEM_read_X509_REQ(fp, NULL, NULL, NULL);
fclose(fp);