libcli/auth Move some source3/ NTLMSSP functions to the common code.
authorAndrew Bartlett <abartlet@samba.org>
Fri, 6 Aug 2010 08:16:32 +0000 (18:16 +1000)
committerGünther Deschner <gd@samba.org>
Tue, 10 Aug 2010 09:56:33 +0000 (11:56 +0200)
libcli/auth Use true and false rather than True and False in common code

Andrew Bartlett

Signed-off-by: Günther Deschner <gd@samba.org>
libcli/auth/ntlmssp.c
libcli/auth/ntlmssp_private.h
libcli/auth/ntlmssp_server.c [new file with mode: 0644]
source3/Makefile.in
source3/libsmb/ntlmssp.c
source4/auth/ntlmssp/ntlmssp.c
source4/auth/ntlmssp/ntlmssp_server.c
source4/auth/ntlmssp/wscript_build

index 1be764ec428f66d158e61e8fcfd0e0866f416334..edd532ef464026305e3b606a04653beec61b658a 100644 (file)
@@ -74,3 +74,63 @@ void debug_ntlmssp_flags(uint32_t neg_flags)
        if (neg_flags & NTLMSSP_NEGOTIATE_56)
                DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_56\n"));
 }
+
+void ntlmssp_handle_neg_flags(struct ntlmssp_state *ntlmssp_state,
+                             uint32_t neg_flags, bool allow_lm)
+{
+       if (neg_flags & NTLMSSP_NEGOTIATE_UNICODE) {
+               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_UNICODE;
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_OEM;
+               ntlmssp_state->unicode = true;
+       } else {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_UNICODE;
+               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_OEM;
+               ntlmssp_state->unicode = false;
+       }
+
+       if ((neg_flags & NTLMSSP_NEGOTIATE_LM_KEY) && allow_lm) {
+               /* other end forcing us to use LM */
+               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_LM_KEY;
+               ntlmssp_state->use_ntlmv2 = false;
+       } else {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_LM_KEY;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_ALWAYS_SIGN;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_NTLM2)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_NTLM2;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_128)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_128;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_56)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_56;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_KEY_EXCH;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_SIGN;
+       }
+
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_SEAL;
+       }
+
+       /* Woop Woop - unknown flag for Windows compatibility...
+          What does this really do ? JRA. */
+       if (!(neg_flags & NTLMSSP_NEGOTIATE_VERSION)) {
+               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_VERSION;
+       }
+
+       if ((neg_flags & NTLMSSP_REQUEST_TARGET)) {
+               ntlmssp_state->neg_flags |= NTLMSSP_REQUEST_TARGET;
+       }
+}
index e2044eea20761769a933b3693726851878012093..cb91987e6eb261a588d8c91b6e5851cdc7c69cae 100644 (file)
@@ -42,3 +42,10 @@ union ntlmssp_crypt_state {
 /* The following definitions come from libcli/auth/ntlmssp.c  */
 
 void debug_ntlmssp_flags(uint32_t neg_flags);
+void ntlmssp_handle_neg_flags(struct ntlmssp_state *ntlmssp_state,
+                             uint32_t neg_flags, bool allow_lm);
+
+/* The following definitions come from libcli/auth/ntlmssp_server.c  */
+
+const char *ntlmssp_target_name(struct ntlmssp_state *ntlmssp_state,
+                               uint32_t neg_flags, uint32_t *chal_flags);
diff --git a/libcli/auth/ntlmssp_server.c b/libcli/auth/ntlmssp_server.c
new file mode 100644 (file)
index 0000000..30b5541
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+   Unix SMB/Netbios implementation.
+   Version 3.0
+   handle NLTMSSP, server side
+
+   Copyright (C) Andrew Tridgell      2001
+   Copyright (C) Andrew Bartlett 2001-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
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "../libcli/auth/ntlmssp.h"
+#include "../libcli/auth/ntlmssp_private.h"
+
+/**
+ * Determine correct target name flags for reply, given server role
+ * and negotiated flags
+ *
+ * @param ntlmssp_state NTLMSSP State
+ * @param neg_flags The flags from the packet
+ * @param chal_flags The flags to be set in the reply packet
+ * @return The 'target name' string.
+ */
+
+const char *ntlmssp_target_name(struct ntlmssp_state *ntlmssp_state,
+                               uint32_t neg_flags, uint32_t *chal_flags)
+{
+       if (neg_flags & NTLMSSP_REQUEST_TARGET) {
+               *chal_flags |= NTLMSSP_NEGOTIATE_TARGET_INFO;
+               *chal_flags |= NTLMSSP_REQUEST_TARGET;
+               if (ntlmssp_state->server.is_standalone) {
+                       *chal_flags |= NTLMSSP_TARGET_TYPE_SERVER;
+                       return ntlmssp_state->server.netbios_name;
+               } else {
+                       *chal_flags |= NTLMSSP_TARGET_TYPE_DOMAIN;
+                       return ntlmssp_state->server.netbios_domain;
+               };
+       } else {
+               return "";
+       }
+}
index af26549eb44066330659a1a92f9f87b2b486ad57..fbb479c531435b4d6fb4986ceebe0e6790910c23 100644 (file)
@@ -501,7 +501,8 @@ LIBSMB_OBJ0 = \
               ../libcli/auth/ntlmssp.o \
               ../libcli/auth/ntlmssp_sign.o \
               $(LIBNDR_NTLMSSP_OBJ) \
-              ../libcli/auth/ntlmssp_ndr.o
+              ../libcli/auth/ntlmssp_ndr.o \
+              ../libcli/auth/ntlmssp_server.o
 
 LIBSAMBA_OBJ = $(LIBSMB_OBJ0) \
               $(LIBSMB_ERR_OBJ)
index a0dc39be3e6a9763f8ceea168fd1f42ba71a2fa3..784a34780301219575a7d5890e46ca22753f5614 100644 (file)
@@ -274,93 +274,6 @@ NTSTATUS ntlmssp_update(struct ntlmssp_state *ntlmssp_state,
        return NT_STATUS_INVALID_PARAMETER;
 }
 
-/**
- * Determine correct target name flags for reply, given server role
- * and negotiated flags
- *
- * @param ntlmssp_state NTLMSSP State
- * @param neg_flags The flags from the packet
- * @param chal_flags The flags to be set in the reply packet
- * @return The 'target name' string.
- */
-
-static const char *ntlmssp_target_name(struct ntlmssp_state *ntlmssp_state,
-                                      uint32_t neg_flags, uint32_t *chal_flags)
-{
-       if (neg_flags & NTLMSSP_REQUEST_TARGET) {
-               *chal_flags |= NTLMSSP_NEGOTIATE_TARGET_INFO;
-               *chal_flags |= NTLMSSP_REQUEST_TARGET;
-               if (ntlmssp_state->server.is_standalone) {
-                       *chal_flags |= NTLMSSP_TARGET_TYPE_SERVER;
-                       return ntlmssp_state->server.netbios_name;
-               } else {
-                       *chal_flags |= NTLMSSP_TARGET_TYPE_DOMAIN;
-                       return ntlmssp_state->server.netbios_domain;
-               };
-       } else {
-               return "";
-       }
-}
-
-static void ntlmssp_handle_neg_flags(struct ntlmssp_state *ntlmssp_state,
-                                    uint32_t neg_flags, bool allow_lm) {
-       if (neg_flags & NTLMSSP_NEGOTIATE_UNICODE) {
-               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_UNICODE;
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_OEM;
-               ntlmssp_state->unicode = True;
-       } else {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_UNICODE;
-               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_OEM;
-               ntlmssp_state->unicode = False;
-       }
-
-       if ((neg_flags & NTLMSSP_NEGOTIATE_LM_KEY) && allow_lm) {
-               /* other end forcing us to use LM */
-               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_LM_KEY;
-               ntlmssp_state->use_ntlmv2 = False;
-       } else {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_LM_KEY;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_ALWAYS_SIGN;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_NTLM2)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_NTLM2;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_128)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_128;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_56)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_56;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_KEY_EXCH;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_SIGN;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_SEAL;
-       }
-
-       /* Woop Woop - unknown flag for Windows compatibility...
-          What does this really do ? JRA. */
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_VERSION)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_VERSION;
-       }
-
-       if ((neg_flags & NTLMSSP_REQUEST_TARGET)) {
-               ntlmssp_state->neg_flags |= NTLMSSP_REQUEST_TARGET;
-       }
-}
-
 /**
  * Next state function for the Negotiate packet
  *
index 74fa62f629e9e85a2bd48adf2327e85053401823..24da1674b84c6a111bd3fe1c64a80767a64ccb02 100644 (file)
@@ -60,55 +60,6 @@ static const struct ntlmssp_callbacks {
 };
 
 
-/**
- * Print out the NTLMSSP flags for debugging 
- * @param neg_flags The flags from the packet
- */
-
-void debug_ntlmssp_flags(uint32_t neg_flags)
-{
-       DEBUG(3,("Got NTLMSSP neg_flags=0x%08x\n", neg_flags));
-       
-       if (neg_flags & NTLMSSP_NEGOTIATE_UNICODE) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_UNICODE\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_OEM) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_OEM\n"));
-       if (neg_flags & NTLMSSP_REQUEST_TARGET) 
-               DEBUGADD(4, ("  NTLMSSP_REQUEST_TARGET\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_SIGN) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_SIGN\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_SEAL) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_SEAL\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_DATAGRAM)
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_DATAGRAM\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_LM_KEY) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_LM_KEY\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_NETWARE) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NETWARE\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_NTLM) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NTLM\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED)
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED)
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_ALWAYS_SIGN\n"));
-       if (neg_flags & NTLMSSP_REQUEST_NON_NT_SESSION_KEY)
-               DEBUGADD(4, ("  NTLMSSP_REQUEST_NON_NT_SESSION_KEY\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_NTLM2) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NTLM2\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_TARGET_INFO)
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_TARGET_INFO\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_128) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_128\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_KEY_EXCH\n"));
-       if (neg_flags & NTLMSSP_NEGOTIATE_56) 
-               DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_56\n"));
-}
-
 static NTSTATUS gensec_ntlmssp_magic(struct gensec_security *gensec_security, 
                                     const DATA_BLOB *first_packet) 
 {
@@ -249,67 +200,6 @@ NTSTATUS gensec_ntlmssp_session_key(struct gensec_security *gensec_security,
        return NT_STATUS_OK;
 }
 
-void ntlmssp_handle_neg_flags(struct ntlmssp_state *ntlmssp_state,
-                             uint32_t neg_flags, bool allow_lm)
-{
-       if (neg_flags & NTLMSSP_NEGOTIATE_UNICODE) {
-               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_UNICODE;
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_OEM;
-               ntlmssp_state->unicode = true;
-       } else {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_UNICODE;
-               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_OEM;
-               ntlmssp_state->unicode = false;
-       }
-
-       if ((neg_flags & NTLMSSP_NEGOTIATE_LM_KEY) && allow_lm && !ntlmssp_state->use_ntlmv2) {
-               /* other end forcing us to use LM */
-               ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_LM_KEY;
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_NTLM2;
-       } else {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_LM_KEY;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_ALWAYS_SIGN;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_SIGN;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_SEAL;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_NTLM2)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_NTLM2;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_128)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_128;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_56)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_56;
-       }
-
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_KEY_EXCH;
-       }
-
-       /* Woop Woop - unknown flag for Windows compatibility...
-          What does this really do ? JRA. */
-       if (!(neg_flags & NTLMSSP_NEGOTIATE_VERSION)) {
-               ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_VERSION;
-       }
-
-       if ((neg_flags & NTLMSSP_REQUEST_TARGET)) {
-               ntlmssp_state->neg_flags |= NTLMSSP_REQUEST_TARGET;
-       }
-       
-}
-
 static bool gensec_ntlmssp_have_feature(struct gensec_security *gensec_security,
                                        uint32_t feature)
 {
index c4c7544a1679ed46467c3a272151fb2c5477bfdd..ce76e3919bb59b6ee4dc0ce0dbca6d12bc77ad3f 100644 (file)
 #include "auth/auth.h"
 #include "param/param.h"
 
-/**
- * Determine correct target name flags for reply, given server role
- * and negotiated flags
- *
- * @param ntlmssp_state NTLMSSP State
- * @param neg_flags The flags from the packet
- * @param chal_flags The flags to be set in the reply packet
- * @return The 'target name' string.
- */
-
-static const char *ntlmssp_target_name(struct ntlmssp_state *ntlmssp_state,
-                                      uint32_t neg_flags, uint32_t *chal_flags)
-{
-       if (neg_flags & NTLMSSP_REQUEST_TARGET) {
-               *chal_flags |= NTLMSSP_NEGOTIATE_TARGET_INFO;
-               *chal_flags |= NTLMSSP_REQUEST_TARGET;
-               if (ntlmssp_state->server.is_standalone) {
-                       *chal_flags |= NTLMSSP_TARGET_TYPE_SERVER;
-                       return ntlmssp_state->server.netbios_name;
-               } else {
-                       *chal_flags |= NTLMSSP_TARGET_TYPE_DOMAIN;
-                       return ntlmssp_state->server.netbios_domain;
-               };
-       } else {
-               return "";
-       }
-}
-
-
-
 /**
  * Next state function for the Negotiate packet
  * 
index 1662808bf6d3748e426ff725a6a0b4183f0b4731..07ab11c85bea40d396801634c34ef5a96bcfbbfe 100644 (file)
@@ -1,7 +1,12 @@
 #!/usr/bin/env python
 
 bld.SAMBA_MODULE('gensec_ntlmssp',
-       source='ntlmssp.c ntlmssp_sign.c ../../../libcli/auth/ntlmssp_sign.c ../../../libcli/auth/ntlmssp_ndr.c ntlmssp_client.c ntlmssp_server.c',
+       source='''ntlmssp.c ntlmssp_sign.c
+                  ntlmssp_client.c ntlmssp_server.c
+                  ../../../libcli/auth/ntlmssp_sign.c
+                  ../../../libcli/auth/ntlmssp_ndr.c
+                  ../../../libcli/auth/ntlmssp.c
+                  ../../../libcli/auth/ntlmssp_server.c''',
        autoproto='proto.h',
        subsystem='gensec',
        init_function='gensec_ntlmssp_init',