libcli/auth Move Samba4's gssapi_error_string from GENSEC to libcli/auth
authorAndrew Bartlett <abartlet@samba.org>
Wed, 20 Apr 2011 07:39:50 +0000 (17:39 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 27 Apr 2011 01:21:37 +0000 (11:21 +1000)
This will allow the GSSAPI PAC fetch code to use it.

Andrew Bartlett

lib/replace/system/kerberos.h
libcli/auth/krb5_wrap.c
libcli/auth/krb5_wrap.h
libcli/auth/wscript_build
source3/include/smb_krb5.h
source4/auth/gensec/gensec_gssapi.c

index bb1f1b9a0944a400843807deb5588af11bf0d13f..10d5f76ccc5c4a49a2c34259afb67845bfee3a6f 100644 (file)
 #include <com_err.h>
 #endif
 
+#if HAVE_GSSAPI_GSSAPI_H
+#include <gssapi/gssapi.h>
+#elif HAVE_GSSAPI_GSSAPI_GENERIC_H
+#include <gssapi/gssapi_generic.h>
+#elif HAVE_GSSAPI_H
+#include <gssapi.h>
+#endif
+
+#include <gssapi/gssapi_krb5.h>
+
 #endif
 #endif
index c69e3946c67d775809c04c29bb36c9a534bf085a..772526140873c5878e0329edb37391a34787a8cd 100644 (file)
@@ -5,6 +5,7 @@
    Copyright (C) Luke Howard 2002-2003
    Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005-2011
    Copyright (C) Guenther Deschner 2005-2009
+   Copyright (C) Simo Sorce 2010.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -307,6 +308,44 @@ krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
        return ret;
 }
 
+char *gssapi_error_string(TALLOC_CTX *mem_ctx, 
+                         OM_uint32 maj_stat, OM_uint32 min_stat, 
+                         const gss_OID mech)
+{
+       OM_uint32 disp_min_stat, disp_maj_stat;
+       gss_buffer_desc maj_error_message;
+       gss_buffer_desc min_error_message;
+       char *maj_error_string, *min_error_string;
+       OM_uint32 msg_ctx = 0;
+
+       char *ret;
+
+       maj_error_message.value = NULL;
+       min_error_message.value = NULL;
+       maj_error_message.length = 0;
+       min_error_message.length = 0;
+       
+       disp_maj_stat = gss_display_status(&disp_min_stat, maj_stat, GSS_C_GSS_CODE,
+                          mech, &msg_ctx, &maj_error_message);
+       disp_maj_stat = gss_display_status(&disp_min_stat, min_stat, GSS_C_MECH_CODE,
+                          mech, &msg_ctx, &min_error_message);
+       
+       maj_error_string = talloc_strndup(mem_ctx, (char *)maj_error_message.value, maj_error_message.length);
+
+       min_error_string = talloc_strndup(mem_ctx, (char *)min_error_message.value, min_error_message.length);
+
+       ret = talloc_asprintf(mem_ctx, "%s: %s", maj_error_string, min_error_string);
+
+       talloc_free(maj_error_string);
+       talloc_free(min_error_string);
+
+       gss_release_buffer(&disp_min_stat, &maj_error_message);
+       gss_release_buffer(&disp_min_stat, &min_error_message);
+
+       return ret;
+}
+
+
  char *smb_get_krb5_error_message(krb5_context context, krb5_error_code code, TALLOC_CTX *mem_ctx)
 {
        char *ret;
index 4f333cc4b0dece55ce92a03d8736da95562194cc..31bee352ab0f7c2a8bac512d7005c6fc2ed1631e 100644 (file)
@@ -31,7 +31,6 @@ int create_kerberos_key_from_string_direct(krb5_context context,
                                           krb5_enctype enctype);
 void kerberos_free_data_contents(krb5_context context, krb5_data *pdata);
 krb5_error_code smb_krb5_kt_free_entry(krb5_context context, krb5_keytab_entry *kt_entry);
-char *smb_get_krb5_error_message(krb5_context context, krb5_error_code code, TALLOC_CTX *mem_ctx);
 
  krb5_error_code smb_krb5_parse_name(krb5_context context,
                                const char *name, /* in unix charset */
@@ -54,6 +53,10 @@ krb5_error_code smb_krb5_unparse_name(TALLOC_CTX *mem_ctx,
                                         krb5_checksum *cksum,
                                         uint8_t *data,
                                          size_t length);
+char *gssapi_error_string(TALLOC_CTX *mem_ctx, 
+                         OM_uint32 maj_stat, OM_uint32 min_stat, 
+                         const gss_OID mech);
+char *smb_get_krb5_error_message(krb5_context context, krb5_error_code code, TALLOC_CTX *mem_ctx);
 
 krb5_error_code check_pac_checksum(TALLOC_CTX *mem_ctx,
                                   DATA_BLOB pac_data,
index bdf52d0399ec3c275828ee0b6775083ee1586770..541eaf04341edf759020d68cab09e8188775d3fc 100644 (file)
@@ -41,4 +41,4 @@ bld.SAMBA_SUBSYSTEM('SPNEGO_PARSE',
 
 bld.SAMBA_SUBSYSTEM('KRB5_WRAP',
                     source='krb5_wrap.c kerberos_pac.c',
-                    deps='krb5 ndr-krb5pac com_err')
+                    deps='gssapi krb5 ndr-krb5pac com_err')
index d87dc79ff9f70383d93110afe6439a2b8eb00074..8109747b700c4104c378bc559f2f255d88e7e910 100644 (file)
 
 #include "libcli/auth/krb5_wrap.h"
 
-#if HAVE_GSSAPI_GSSAPI_H
-#include <gssapi/gssapi.h>
-#elif HAVE_GSSAPI_GSSAPI_GENERIC_H
-#include <gssapi/gssapi_generic.h>
-#elif HAVE_GSSAPI_H
-#include <gssapi.h>
-#endif
-
 #ifndef KRB5_ADDR_NETBIOS
 #define KRB5_ADDR_NETBIOS 0x14
 #endif
index 59029e6fc904c39e1c09eb45acab060087ddf661..0dfc38d28825271643ff9e503fb230028dba4223 100644 (file)
@@ -47,44 +47,6 @@ _PUBLIC_ NTSTATUS gensec_gssapi_init(void);
 static size_t gensec_gssapi_max_input_size(struct gensec_security *gensec_security);
 static size_t gensec_gssapi_max_wrapped_size(struct gensec_security *gensec_security);
 
-static char *gssapi_error_string(TALLOC_CTX *mem_ctx, 
-                                OM_uint32 maj_stat, OM_uint32 min_stat, 
-                                const gss_OID mech)
-{
-       OM_uint32 disp_min_stat, disp_maj_stat;
-       gss_buffer_desc maj_error_message;
-       gss_buffer_desc min_error_message;
-       char *maj_error_string, *min_error_string;
-       OM_uint32 msg_ctx = 0;
-
-       char *ret;
-
-       maj_error_message.value = NULL;
-       min_error_message.value = NULL;
-       maj_error_message.length = 0;
-       min_error_message.length = 0;
-       
-       disp_maj_stat = gss_display_status(&disp_min_stat, maj_stat, GSS_C_GSS_CODE,
-                          mech, &msg_ctx, &maj_error_message);
-       disp_maj_stat = gss_display_status(&disp_min_stat, min_stat, GSS_C_MECH_CODE,
-                          mech, &msg_ctx, &min_error_message);
-       
-       maj_error_string = talloc_strndup(mem_ctx, (char *)maj_error_message.value, maj_error_message.length);
-
-       min_error_string = talloc_strndup(mem_ctx, (char *)min_error_message.value, min_error_message.length);
-
-       ret = talloc_asprintf(mem_ctx, "%s: %s", maj_error_string, min_error_string);
-
-       talloc_free(maj_error_string);
-       talloc_free(min_error_string);
-
-       gss_release_buffer(&disp_min_stat, &maj_error_message);
-       gss_release_buffer(&disp_min_stat, &min_error_message);
-
-       return ret;
-}
-
-
 static int gensec_gssapi_destructor(struct gensec_gssapi_state *gensec_gssapi_state)
 {
        OM_uint32 maj_stat, min_stat;