Add code to set attribute names in the environment
[mod_auth_gssapi.git] / src / mod_auth_gssapi.h
index b08c38a..4e9fdf3 100644 (file)
@@ -3,10 +3,6 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <time.h>
-#include <gssapi/gssapi.h>
-#include <gssapi/gssapi_ext.h>
-#include <gssapi/gssapi_krb5.h>
-#include <gssapi/gssapi_ntlmssp.h>
 
 #define APR_WANT_STRFUNC
 #include "apr_want.h"
 #undef PACKAGE_VERSION
 #include "config.h"
 
+#include <gssapi/gssapi.h>
+#include <gssapi/gssapi_ext.h>
+#include <gssapi/gssapi_krb5.h>
+#ifdef HAVE_GSSAPI_GSSAPI_NTLMSSP_H
+#  include <gssapi/gssapi_ntlmssp.h>
+#endif
+
 #include "crypto.h"
 #include "sessions.h"
+#include "environ.h"
 
 #define MIN_SESS_EXP_TIME 300 /* 5 minutes validity minimum */
 
 #  endif
 #endif
 
+struct mag_na_map {
+    char *env_name;
+    char *attr_name;
+};
+
+struct mag_name_attributes {
+    bool output_json;
+    int map_count;
+    struct mag_na_map map[];
+};
+
 struct mag_config {
     apr_pool_t *pool;
     bool ssl_only;
@@ -59,6 +74,7 @@ struct mag_config {
     bool use_basic_auth;
     gss_OID_set_desc *allowed_mechs;
     gss_OID_set_desc *basic_mechs;
+    struct mag_name_attributes *name_attributes;
 };
 
 struct mag_server_config {
@@ -77,6 +93,11 @@ struct mag_req_cfg {
     struct seal_key *mag_skey;
 };
 
+struct mag_attr {
+    const char *name;
+    const char *value;
+};
+
 struct mag_conn {
     apr_pool_t *pool;
     gss_ctx_id_t ctx;
@@ -87,8 +108,15 @@ struct mag_conn {
     int auth_type;
     bool delegated;
     struct databuf basic_hash;
+    bool is_preserved;
+    int na_count;
+    struct mag_attr *name_attributes;
 };
 
 #define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
 
 struct mag_conn *mag_new_conn_ctx(apr_pool_t *pool);
+const char *mag_str_auth_type(int auth_type);
+char *mag_gss_name_to_ccache_name(request_rec *req,
+                                  char *dir, const char *gss_name);
+char *mag_error(request_rec *req, const char *msg, uint32_t maj, uint32_t min);