Add mod_auth_gssapi.h
[mod_auth_gssapi.git] / src / mod_auth_gssapi.c
index 99bef7f..e8c1966 100644 (file)
    DEALINGS IN THE SOFTWARE.
 */
 
-#include <stdbool.h>
-#include <stdint.h>
-#include <gssapi/gssapi.h>
-#include <gssapi/gssapi_ext.h>
-
-#include <httpd.h>
-#include <http_core.h>
-#include <http_connection.h>
-#include <http_log.h>
-#include <http_request.h>
-#include <apr_strings.h>
-#include <apr_base64.h>
+#include "mod_auth_gssapi.h"
 
 module AP_MODULE_DECLARE_DATA auth_gssapi_module;
 
 APR_DECLARE_OPTIONAL_FN(int, ssl_is_https, (conn_rec *));
 
-struct mag_config {
-    bool ssl_only;
-    bool map_to_local;
-    bool gss_conn_ctx;
-    gss_key_value_set_desc cred_store;
-};
-
 static char *mag_status(request_rec *req, int type, uint32_t err)
 {
     uint32_t maj_ret, min_ret;
@@ -234,7 +216,7 @@ static int mag_auth(request_rec *req)
         if (!cfg->gss_conn_ctx) {
             ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, req,
                           "Mechanism needs continuation but "
-                          "GSSConnectionContext is off.");
+                          "GssapiConnectionBound is off.");
             gss_delete_sec_context(&min, pctx, GSS_C_NO_BUFFER);
             gss_release_buffer(&min, &output);
             output.length = 0;
@@ -243,9 +225,9 @@ static int mag_auth(request_rec *req)
     }
 
 #ifdef HAVE_GSS_STORE_CRED_INTO
-    if (cfg->cred_store && delegated_cred != GSS_C_NO_CREDENTIAL) {
+    if (cfg->cred_store.count != 0 && delegated_cred != GSS_C_NO_CREDENTIAL) {
         gss_key_value_set_desc store = {0, NULL};
-        /* FIXME: run substtutions */
+        /* FIXME: run substitutions */
 
         maj = gss_store_cred_into(&min, delegated_cred, GSS_C_INITIATE,
                                   GSS_C_NULL_OID, 1, 1, &store, NULL, NULL);
@@ -355,7 +337,7 @@ static const char *mag_cred_store(cmd_parms *parms, void *mconfig,
     p = strchr(w, ':');
     if (!p) {
         ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, parms->server,
-                     "%s [%s]", "Invalid syntax for GSSCredStore option", w);
+                     "%s [%s]", "Invalid syntax for GssapiCredStore option", w);
         return NULL;
     }
 
@@ -363,7 +345,7 @@ static const char *mag_cred_store(cmd_parms *parms, void *mconfig,
     value = apr_pstrdup(parms->pool, p + 1);
     if (!key || !value) {
         ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, parms->server,
-                     "%s", "OOM handling GSSCredStore option");
+                     "%s", "OOM handling GssapiCredStore option");
         return NULL;
     }
 
@@ -371,7 +353,7 @@ static const char *mag_cred_store(cmd_parms *parms, void *mconfig,
     elements = apr_palloc(parms->pool, size);
     if (!elements) {
         ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, parms->server,
-                     "%s", "OOM handling GSSCredStore option");
+                     "%s", "OOM handling GssapiCredStore option");
         return NULL;
     }
 
@@ -388,13 +370,13 @@ static const char *mag_cred_store(cmd_parms *parms, void *mconfig,
 }
 
 static const command_rec mag_commands[] = {
-    AP_INIT_FLAG("GSSSSLOnly", mag_ssl_only, NULL, OR_AUTHCFG,
+    AP_INIT_FLAG("GssapiSSLonly", mag_ssl_only, NULL, OR_AUTHCFG,
                   "Work only if connection is SSL Secured"),
-    AP_INIT_FLAG("GSSLocalName", mag_map_to_local, NULL, OR_AUTHCFG,
+    AP_INIT_FLAG("GssapiLocalName", mag_map_to_local, NULL, OR_AUTHCFG,
                   "Work only if connection is SSL Secured"),
-    AP_INIT_FLAG("GSSConnectionContext", mag_conn_ctx, NULL, OR_AUTHCFG,
-                  "Authentication is valid for the life of the connection"),
-    AP_INIT_ITERATE("GSSCredStore", mag_cred_store, NULL, OR_AUTHCFG,
+    AP_INIT_FLAG("GssapiConnectionBound", mag_conn_ctx, NULL, OR_AUTHCFG,
+                  "Authentication is bound to the TCP connection"),
+    AP_INIT_ITERATE("GssapiCredStore", mag_cred_store, NULL, OR_AUTHCFG,
                     "Credential Store"),
     { NULL }
 };