]> code.citadel.org Git - citadel.git/blobdiff - webcit/crypto.c
* Allow the '-S' command line option, so the cipher suites can be specified without...
[citadel.git] / webcit / crypto.c
index 534e617e9e96ddc528a030c09df867d79fe307b9..344dc6a5a83c41999b8ab840ab74cb93408638da 100644 (file)
@@ -17,6 +17,7 @@
 
 SSL_CTX *ssl_ctx;              /* SSL context */
 pthread_mutex_t **SSLCritters; /* Things needing locking */
+char *ssl_cipher_list = DEFAULT_SSL_CIPHER_LIST;
 
 pthread_key_t ThreadSSL;       /* Per-thread SSL context */
 
@@ -52,6 +53,7 @@ void init_ssl(void)
        X509_NAME *name = NULL;
        FILE *fp;
        char buf[SIZ];
+       int rv = 0;
 
        if (!access("/var/run/egd-pool", F_OK)) {
                RAND_egd("/var/run/egd-pool");
@@ -90,8 +92,13 @@ void init_ssl(void)
        SSL_load_error_strings();
        ssl_method = SSLv23_server_method();
        if (!(ssl_ctx = SSL_CTX_new(ssl_method))) {
-               lprintf(3, "SSL_CTX_new failed: %s\n",
-                       ERR_reason_error_string(ERR_get_error()));
+               lprintf(3, "SSL_CTX_new failed: %s\n", ERR_reason_error_string(ERR_get_error()));
+               return;
+       }
+
+       lprintf(9, "Requesting cipher list: %s\n", ssl_cipher_list);
+       if (!(SSL_CTX_set_cipher_list(ssl_ctx, ssl_cipher_list))) {
+               lprintf(3, "SSL_CTX_set_cipher_list failed: %s\n", ERR_reason_error_string(ERR_get_error()));
                return;
        }
 
@@ -114,11 +121,14 @@ void init_ssl(void)
         */
        if (!strcasecmp(ctdlhost, "uds")) {
                sprintf(buf, "%s/keys/citadel.key", ctdlport);
-               symlink(buf, CTDL_KEY_PATH);
+               rv = symlink(buf, CTDL_KEY_PATH);
+               if (!rv) lprintf(1, "%s\n", strerror(errno));
                sprintf(buf, "%s/keys/citadel.csr", ctdlport);
-               symlink(buf, CTDL_CSR_PATH);
+               rv = symlink(buf, CTDL_CSR_PATH);
+               if (!rv) lprintf(1, "%s\n", strerror(errno));
                sprintf(buf, "%s/keys/citadel.cer", ctdlport);
-               symlink(buf, CTDL_CER_PATH);
+               rv = symlink(buf, CTDL_CER_PATH);
+               if (!rv) lprintf(1, "%s\n", strerror(errno));
        }
 
        /*
@@ -147,7 +157,7 @@ void init_ssl(void)
                                                        NULL    /* no callbk */
                                ) != 1) {
                                        lprintf(3, "Cannot write key: %s\n",
-                                               ERR_reason_error_string(ERR_get_error()));
+                                               ERR_reason_error_string(ERR_get_error()));
                                        unlink(CTDL_KEY_PATH);
                                }
                                fclose(fp);
@@ -233,7 +243,7 @@ void init_ssl(void)
                                                -1, -1, 0
                                        );
 
-                                       env = getenv("O");
+                                       env = getenv("CN");
                                        if (env == NULL)
                                                env = "*";