The branch, master has been updated
       via  4581902... s3-dcerpc: Unifiy cli_pipe_auth_data and pipe_auth_data
       via  a91727f... s3-auth: Add auth_ntlmssp wrapper for client side
       via  e958b39... s3-auth: Move auth_ntlmssp wrappers in their own file
       via  a04bbd2... s3-auth: Refactor and rename auth_ntlmssp_server_info()
      from  0bb8d13... Remove gen_negTokenInit() - change all callers to 
spnego_gen_negTokenInit(). We now have one function to do this in all calling 
code. More rationalization to follow.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 4581902553b511a5ad4bae3249df9326b4cf95ec
Author: Simo Sorce <i...@samba.org>
Date:   Sat Jul 17 16:58:50 2010 -0400

    s3-dcerpc: Unifiy cli_pipe_auth_data and pipe_auth_data
    
    Signed-off-by: Andrew Bartlett <abart...@samba.org>

commit a91727fc7974aeb314bfb6378f078e6727b20344
Author: Simo Sorce <i...@samba.org>
Date:   Mon Jul 19 13:39:01 2010 -0400

    s3-auth: Add auth_ntlmssp wrapper for client side
    
    Signed-off-by: Andrew Bartlett <abart...@samba.org>

commit e958b39042b67acaf2dc90a1f3d9bea51d7cebd8
Author: Simo Sorce <i...@samba.org>
Date:   Mon Jul 19 13:36:33 2010 -0400

    s3-auth: Move auth_ntlmssp wrappers in their own file
    
    Signed-off-by: Andrew Bartlett <abart...@samba.org>

commit a04bbd281c5b94166e23026ea06e98939250028c
Author: Simo Sorce <i...@samba.org>
Date:   Fri Jul 16 18:33:38 2010 -0400

    s3-auth: Refactor and rename auth_ntlmssp_server_info()
    
    Rename it to auth_ntlmssp_steal_server_info() to make it clear that
    the server_info struct is stolen from the auth_ntlmssp_state structure.
    Use talloc_move instead of manual steal&clear
    Add comments to explain what is going on.
    
    Signed-off-by: Andrew Bartlett <abart...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/Makefile.in            |    1 +
 source3/auth/auth_netlogond.c  |    4 +-
 source3/auth/auth_ntlmssp.c    |  102 +++--------------------
 source3/include/client.h       |   17 +----
 source3/include/ntdomain.h     |    9 ++-
 source3/include/ntlmssp_wrap.h |   85 +++++++++++++++++++
 source3/include/proto.h        |   41 ++--------
 source3/libsmb/ntlmssp_wrap.c  |  177 ++++++++++++++++++++++++++++++++++++++++
 source3/rpc_client/cli_pipe.c  |  104 +++++++++++++-----------
 source3/rpc_server/srv_pipe.c  |    3 +-
 source3/smbd/seal.c            |    1 +
 source3/smbd/sesssetup.c       |    4 +-
 source3/smbd/smb2_sesssetup.c  |    3 +-
 13 files changed, 360 insertions(+), 191 deletions(-)
 create mode 100644 source3/include/ntlmssp_wrap.h
 create mode 100644 source3/libsmb/ntlmssp_wrap.c


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index 26879c4..45bf8fd 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -495,6 +495,7 @@ LIBSMB_ERR_OBJ = $(LIBSMB_ERR_OBJ0) $(LIBSMB_ERR_OBJ1) \
 LIBSMB_OBJ0 = \
               ../libcli/auth/ntlm_check.o \
               libsmb/ntlmssp.o \
+              libsmb/ntlmssp_wrap.o \
               ../libcli/auth/ntlmssp.o \
               ../libcli/auth/ntlmssp_sign.o \
               $(LIBNDR_NTLMSSP_OBJ) \
diff --git a/source3/auth/auth_netlogond.c b/source3/auth/auth_netlogond.c
index 6bd7c3d..7eea5af 100644
--- a/source3/auth/auth_netlogond.c
+++ b/source3/auth/auth_netlogond.c
@@ -34,7 +34,7 @@ static NTSTATUS netlogond_validate(TALLOC_CTX *mem_ctx,
                                   NTSTATUS *schannel_bind_result)
 {
        struct rpc_pipe_client *p = NULL;
-       struct cli_pipe_auth_data *auth = NULL;
+       struct pipe_auth_data *auth = NULL;
        struct netr_SamInfo3 *info3 = NULL;
        NTSTATUS status;
 
@@ -161,7 +161,7 @@ static NTSTATUS check_netlogond_security(const struct 
auth_context *auth_context
        TALLOC_CTX *frame = talloc_stackframe();
        struct netr_SamInfo3 *info3 = NULL;
        struct rpc_pipe_client *p = NULL;
-       struct cli_pipe_auth_data *auth = NULL;
+       struct pipe_auth_data *auth = NULL;
        uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
        char *plaintext_machinepw = NULL;
        uint8_t machine_password[16];
diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c
index a71c02b..66adc6f 100644
--- a/source3/auth/auth_ntlmssp.c
+++ b/source3/auth/auth_ntlmssp.c
@@ -22,56 +22,7 @@
 
 #include "includes.h"
 #include "../libcli/auth/ntlmssp.h"
-
-struct auth_ntlmssp_state {
-       struct auth_context *auth_context;
-       struct auth_serversupplied_info *server_info;
-       struct ntlmssp_state *ntlmssp_state;
-};
-
-NTSTATUS auth_ntlmssp_sign_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                 TALLOC_CTX *sig_mem_ctx,
-                                 const uint8_t *data, size_t length,
-                                 const uint8_t *whole_pdu, size_t pdu_length,
-                                 DATA_BLOB *sig)
-{
-       return ntlmssp_sign_packet(auth_ntlmssp_state->ntlmssp_state, 
sig_mem_ctx, data, length, whole_pdu, pdu_length, sig);
-}
-
-NTSTATUS auth_ntlmssp_check_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                  const uint8_t *data, size_t length,
-                                  const uint8_t *whole_pdu, size_t pdu_length,
-                                  const DATA_BLOB *sig)
-{
-       return ntlmssp_check_packet(auth_ntlmssp_state->ntlmssp_state, data, 
length, whole_pdu, pdu_length, sig);
-}
-
-NTSTATUS auth_ntlmssp_seal_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                 TALLOC_CTX *sig_mem_ctx,
-                                 uint8_t *data, size_t length,
-                                 const uint8_t *whole_pdu, size_t pdu_length,
-                                 DATA_BLOB *sig)
-{
-       return ntlmssp_seal_packet(auth_ntlmssp_state->ntlmssp_state, 
sig_mem_ctx, data, length, whole_pdu, pdu_length, sig);
-}
-
-NTSTATUS auth_ntlmssp_unseal_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                   uint8_t *data, size_t length,
-                                   const uint8_t *whole_pdu, size_t pdu_length,
-                                   const DATA_BLOB *sig)
-{
-       return ntlmssp_unseal_packet(auth_ntlmssp_state->ntlmssp_state, data, 
length, whole_pdu, pdu_length, sig);
-}
-
-bool auth_ntlmssp_negotiated_sign(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
-{
-       return auth_ntlmssp_state->ntlmssp_state->neg_flags & 
NTLMSSP_NEGOTIATE_SIGN;
-}
-
-bool auth_ntlmssp_negotiated_seal(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
-{
-       return auth_ntlmssp_state->ntlmssp_state->neg_flags & 
NTLMSSP_NEGOTIATE_SEAL;
-}
+#include "ntlmssp_wrap.h"
 
 void auth_ntlmssp_want_sign(struct auth_ntlmssp_state *auth_ntlmssp_state)
 {
@@ -83,47 +34,28 @@ void auth_ntlmssp_want_seal(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
 
 }
 
-NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx,
-                                 struct auth_ntlmssp_state *auth_ntlmssp_state,
-                                 struct auth_serversupplied_info 
**_server_info)
+NTSTATUS auth_ntlmssp_steal_server_info(TALLOC_CTX *mem_ctx,
+                               struct auth_ntlmssp_state *auth_ntlmssp_state,
+                               struct auth_serversupplied_info **server_info)
 {
-       struct auth_serversupplied_info *server_info = 
auth_ntlmssp_state->server_info;
-       data_blob_free(&server_info->user_session_key);
-       server_info->user_session_key =
+       /* Free the current server_info user_session_key and reset it from the
+        * current ntlmssp_state session_key */
+       data_blob_free(&auth_ntlmssp_state->server_info->user_session_key);
+       auth_ntlmssp_state->server_info->user_session_key =
                data_blob_talloc(
-                       server_info,
+                       auth_ntlmssp_state->server_info,
                        auth_ntlmssp_state->ntlmssp_state->session_key.data,
                        auth_ntlmssp_state->ntlmssp_state->session_key.length);
-       if (auth_ntlmssp_state->ntlmssp_state->session_key.length && 
!server_info->user_session_key.data) {
-               *_server_info = NULL;
+       if (auth_ntlmssp_state->ntlmssp_state->session_key.length &&
+           !auth_ntlmssp_state->server_info->user_session_key.data) {
+               *server_info = NULL;
                return NT_STATUS_NO_MEMORY;
        }
-       auth_ntlmssp_state->server_info = NULL;
-       *_server_info = talloc_steal(mem_ctx, server_info);
+       /* Steal server_info away from auth_ntlmssp_state */
+       *server_info = talloc_move(mem_ctx, &auth_ntlmssp_state->server_info);
        return NT_STATUS_OK;
 }
 
-struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
-{
-       return auth_ntlmssp_state->ntlmssp_state;
-}
-
-/* Needed for 'map to guest' and 'smb username' processing */
-const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
-{
-       return auth_ntlmssp_state->ntlmssp_state->user;
-}
-
-const char *auth_ntlmssp_get_domain(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
-{
-       return auth_ntlmssp_state->ntlmssp_state->domain;
-}
-
-const char *auth_ntlmssp_get_client(struct auth_ntlmssp_state 
*auth_ntlmssp_state)
-{
-       return auth_ntlmssp_state->ntlmssp_state->client.netbios_name;
-}
-
 /**
  * Return the challenge as determined by the authentication subsystem 
  * @return an 8 byte random challenge
@@ -327,9 +259,3 @@ static int auth_ntlmssp_state_destructor(void *ptr)
        TALLOC_FREE(ans->ntlmssp_state);
        return 0;
 }
-
-NTSTATUS auth_ntlmssp_update(struct auth_ntlmssp_state *auth_ntlmssp_state,
-                            const DATA_BLOB request, DATA_BLOB *reply) 
-{
-       return ntlmssp_update(auth_ntlmssp_state->ntlmssp_state, request, 
reply);
-}
diff --git a/source3/include/client.h b/source3/include/client.h
index c245f55..d2afecf 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -48,21 +48,6 @@ struct print_job_info {
        time_t t;
 };
 
-struct cli_pipe_auth_data {
-       enum pipe_auth_type auth_type; /* switch for the union below. Defined 
in ntdomain.h */
-       enum dcerpc_AuthLevel auth_level; /* defined in ntdomain.h */
-
-       char *domain;
-       char *user_name;
-       DATA_BLOB user_session_key;
-
-       union {
-               struct schannel_state *schannel_auth;
-               struct ntlmssp_state *ntlmssp_state;
-               struct kerberos_auth_struct *kerberos_auth;
-       } a_u;
-};
-
 /**
  * rpc_cli_transport defines a transport mechanism to ship rpc requests
  * asynchronously to a server and receive replies
@@ -149,7 +134,7 @@ struct rpc_pipe_client {
        uint16 max_xmit_frag;
        uint16 max_recv_frag;
 
-       struct cli_pipe_auth_data *auth;
+       struct pipe_auth_data *auth;
 
        /* The following is only non-null on a netlogon client pipe. */
        struct netlogon_creds_CredentialState *dc;
diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h
index 629e51c..ea1c0c8 100644
--- a/source3/include/ntdomain.h
+++ b/source3/include/ntdomain.h
@@ -107,11 +107,18 @@ struct kerberos_auth_struct {
 struct pipe_auth_data {
        enum pipe_auth_type auth_type; /* switch for union below. */
        enum dcerpc_AuthLevel auth_level;
+
        union {
                struct schannel_state *schannel_auth;
                struct auth_ntlmssp_state *auth_ntlmssp_state;
-/*             struct kerberos_auth_struct *kerberos_auth; TO BE ADDED... */
+               struct kerberos_auth_struct *kerberos_auth; /* Client only for 
now */
        } a_u;
+
+       /* Only the client code uses these 3 for now */
+       char *domain;
+       char *user_name;
+       DATA_BLOB user_session_key;
+
        void (*auth_data_free_func)(struct pipe_auth_data *);
 };
 
diff --git a/source3/include/ntlmssp_wrap.h b/source3/include/ntlmssp_wrap.h
new file mode 100644
index 0000000..ec97f58
--- /dev/null
+++ b/source3/include/ntlmssp_wrap.h
@@ -0,0 +1,85 @@
+/*
+   NLTMSSP wrappers
+
+   Copyright (C) Andrew Tridgell      2001
+   Copyright (C) Andrew Bartlett 2001-2003
+
+   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/>.
+*/
+
+#ifndef _NTLMSSP_WRAP_
+#define _NTLMSSP_WRAP_
+
+struct auth_ntlmssp_state {
+       /* used only by server implementation */
+       struct auth_context *auth_context;
+       struct auth_serversupplied_info *server_info;
+
+       /* used by both client and server implementation */
+       struct ntlmssp_state *ntlmssp_state;
+};
+
+NTSTATUS auth_ntlmssp_sign_packet(struct auth_ntlmssp_state *ans,
+                                 TALLOC_CTX *sig_mem_ctx,
+                                 const uint8_t *data,
+                                 size_t length,
+                                 const uint8_t *whole_pdu,
+                                 size_t pdu_length,
+                                 DATA_BLOB *sig);
+NTSTATUS auth_ntlmssp_check_packet(struct auth_ntlmssp_state *ans,
+                                  const uint8_t *data,
+                                  size_t length,
+                                  const uint8_t *whole_pdu,
+                                  size_t pdu_length,
+                                  const DATA_BLOB *sig);
+NTSTATUS auth_ntlmssp_seal_packet(struct auth_ntlmssp_state *ans,
+                                 TALLOC_CTX *sig_mem_ctx,
+                                 uint8_t *data,
+                                 size_t length,
+                                 const uint8_t *whole_pdu,
+                                 size_t pdu_length,
+                                 DATA_BLOB *sig);
+NTSTATUS auth_ntlmssp_unseal_packet(struct auth_ntlmssp_state *ans,
+                                   uint8_t *data,
+                                   size_t length,
+                                   const uint8_t *whole_pdu,
+                                   size_t pdu_length,
+                                   const DATA_BLOB *sig);
+bool auth_ntlmssp_negotiated_sign(struct auth_ntlmssp_state *ans);
+bool auth_ntlmssp_negotiated_seal(struct auth_ntlmssp_state *ans);
+struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(
+                                       struct auth_ntlmssp_state *ans);
+const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state *ans);
+const char *auth_ntlmssp_get_domain(struct auth_ntlmssp_state *ans);
+const char *auth_ntlmssp_get_client(struct auth_ntlmssp_state *ans);
+const uint8_t *auth_ntlmssp_get_nt_hash(struct auth_ntlmssp_state *ans);
+NTSTATUS auth_ntlmssp_set_username(struct auth_ntlmssp_state *ans,
+                                  const char *user);
+NTSTATUS auth_ntlmssp_set_domain(struct auth_ntlmssp_state *ans,
+                                const char *domain);
+NTSTATUS auth_ntlmssp_set_password(struct auth_ntlmssp_state *ans,
+                                  const char *password);
+void auth_ntlmssp_and_flags(struct auth_ntlmssp_state *ans, uint32_t flags);
+void auth_ntlmssp_or_flags(struct auth_ntlmssp_state *ans, uint32_t flags);
+DATA_BLOB auth_ntlmssp_get_session_key(struct auth_ntlmssp_state *ans);
+
+NTSTATUS auth_ntlmssp_update(struct auth_ntlmssp_state *ans,
+                            const DATA_BLOB request, DATA_BLOB *reply);
+
+NTSTATUS auth_ntlmssp_client_start(TALLOC_CTX *mem_ctx,
+                                  const char *netbios_name,
+                                  const char *netbios_domain,
+                                  bool use_ntlmv2,
+                                  struct auth_ntlmssp_state **_ans);
+#endif /* _NTLMSSP_WRAP_ */
diff --git a/source3/include/proto.h b/source3/include/proto.h
index a85f7b5..0865340 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -54,38 +54,13 @@ NTSTATUS auth_netlogond_init(void);
 
 /* The following definitions come from auth/auth_ntlmssp.c  */
 
-NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx,
-                                 struct auth_ntlmssp_state *auth_ntlmssp_state,
-                                 struct auth_serversupplied_info 
**_server_info);
-struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(struct auth_ntlmssp_state 
*auth_ntlmssp_state);
-const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state 
*auth_ntlmssp_state);
-const char *auth_ntlmssp_get_domain(struct auth_ntlmssp_state 
*auth_ntlmssp_state);
-const char *auth_ntlmssp_get_client(struct auth_ntlmssp_state 
*auth_ntlmssp_state);
-bool auth_ntlmssp_negotiated_sign(struct auth_ntlmssp_state 
*auth_ntlmssp_state);
-bool auth_ntlmssp_negotiated_seal(struct auth_ntlmssp_state 
*auth_ntlmssp_state);
+NTSTATUS auth_ntlmssp_steal_server_info(TALLOC_CTX *mem_ctx,
+                               struct auth_ntlmssp_state *auth_ntlmssp_state,
+                               struct auth_serversupplied_info **server_info);
 void auth_ntlmssp_want_sign(struct auth_ntlmssp_state *auth_ntlmssp_state);
 void auth_ntlmssp_want_seal(struct auth_ntlmssp_state *auth_ntlmssp_state);
 NTSTATUS auth_ntlmssp_start(struct auth_ntlmssp_state **auth_ntlmssp_state);
-NTSTATUS auth_ntlmssp_update(struct auth_ntlmssp_state *auth_ntlmssp_state,
-                            const DATA_BLOB request, DATA_BLOB *reply) ;
-NTSTATUS auth_ntlmssp_sign_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                 TALLOC_CTX *sig_mem_ctx,
-                                 const uint8_t *data, size_t length,
-                                 const uint8_t *whole_pdu, size_t pdu_length,
-                                 DATA_BLOB *sig);
-NTSTATUS auth_ntlmssp_check_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                  const uint8_t *data, size_t length,
-                                  const uint8_t *whole_pdu, size_t pdu_length,
-                                  const DATA_BLOB *sig) ;
-NTSTATUS auth_ntlmssp_seal_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                 TALLOC_CTX *sig_mem_ctx,
-                                 uint8_t *data, size_t length,
-                                 const uint8_t *whole_pdu, size_t pdu_length,
-                                 DATA_BLOB *sig);
-NTSTATUS auth_ntlmssp_unseal_packet(struct auth_ntlmssp_state 
*auth_ntlmssp_state,
-                                   uint8_t *data, size_t length,
-                                   const uint8_t *whole_pdu, size_t pdu_length,
-                                   const DATA_BLOB *sig);
+
 
 /* The following definitions come from auth/auth_sam.c  */
 
@@ -4853,20 +4828,20 @@ NTSTATUS rpc_api_pipe_req_recv(struct tevent_req *req, 
TALLOC_CTX *mem_ctx,
 struct tevent_req *rpc_pipe_bind_send(TALLOC_CTX *mem_ctx,
                                      struct event_context *ev,
                                      struct rpc_pipe_client *cli,
-                                     struct cli_pipe_auth_data *auth);
+                                     struct pipe_auth_data *auth);
 NTSTATUS rpc_pipe_bind_recv(struct tevent_req *req);
 NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
-                      struct cli_pipe_auth_data *auth);
+                      struct pipe_auth_data *auth);
 unsigned int rpccli_set_timeout(struct rpc_pipe_client *cli,
                                unsigned int timeout);
 bool rpccli_is_connected(struct rpc_pipe_client *rpc_cli);
 bool rpccli_get_pwd_hash(struct rpc_pipe_client *cli, uint8_t nt_hash[16]);
 NTSTATUS rpccli_anon_bind_data(TALLOC_CTX *mem_ctx,
-                              struct cli_pipe_auth_data **presult);
+                              struct pipe_auth_data **presult);
 NTSTATUS rpccli_schannel_bind_data(TALLOC_CTX *mem_ctx, const char *domain,
                                   enum dcerpc_AuthLevel auth_level,
                                   struct netlogon_creds_CredentialState *creds,
-                                  struct cli_pipe_auth_data **presult);
+                                  struct pipe_auth_data **presult);
 NTSTATUS rpc_pipe_open_tcp(TALLOC_CTX *mem_ctx, const char *host,
                           const struct ndr_syntax_id *abstract_syntax,
                           struct rpc_pipe_client **presult);
diff --git a/source3/libsmb/ntlmssp_wrap.c b/source3/libsmb/ntlmssp_wrap.c
new file mode 100644
index 0000000..b3ddf50
--- /dev/null
+++ b/source3/libsmb/ntlmssp_wrap.c
@@ -0,0 +1,177 @@
+/*
+   NLTMSSP wrappers
+
+   Copyright (C) Andrew Tridgell      2001
+   Copyright (C) Andrew Bartlett 2001-2003
+
+   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 "ntlmssp_wrap.h"
+
+NTSTATUS auth_ntlmssp_sign_packet(struct auth_ntlmssp_state *ans,
+                                 TALLOC_CTX *sig_mem_ctx,
+                                 const uint8_t *data,
+                                 size_t length,
+                                 const uint8_t *whole_pdu,
+                                 size_t pdu_length,
+                                 DATA_BLOB *sig)
+{
+       return ntlmssp_sign_packet(ans->ntlmssp_state,
+                                  sig_mem_ctx,
+                                  data, length,
+                                  whole_pdu, pdu_length,
+                                  sig);
+}
+
+NTSTATUS auth_ntlmssp_check_packet(struct auth_ntlmssp_state *ans,
+                                  const uint8_t *data,
+                                  size_t length,
+                                  const uint8_t *whole_pdu,
+                                  size_t pdu_length,
+                                  const DATA_BLOB *sig)
+{
+       return ntlmssp_check_packet(ans->ntlmssp_state,
+                                   data, length,
+                                   whole_pdu, pdu_length,
+                                   sig);
+}
+
+NTSTATUS auth_ntlmssp_seal_packet(struct auth_ntlmssp_state *ans,
+                                 TALLOC_CTX *sig_mem_ctx,
+                                 uint8_t *data,
+                                 size_t length,
+                                 const uint8_t *whole_pdu,
+                                 size_t pdu_length,
+                                 DATA_BLOB *sig)
+{
+       return ntlmssp_seal_packet(ans->ntlmssp_state,
+                                  sig_mem_ctx,
+                                  data, length,
+                                  whole_pdu, pdu_length,
+                                  sig);
+}
+
+NTSTATUS auth_ntlmssp_unseal_packet(struct auth_ntlmssp_state *ans,
+                                   uint8_t *data,
+                                   size_t length,
+                                   const uint8_t *whole_pdu,
+                                   size_t pdu_length,
+                                   const DATA_BLOB *sig)
+{
+       return ntlmssp_unseal_packet(ans->ntlmssp_state,
+                                    data, length,
+                                    whole_pdu, pdu_length,
+                                    sig);
+}
+
+bool auth_ntlmssp_negotiated_sign(struct auth_ntlmssp_state *ans)
+{
+       return ans->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SIGN;
+}
+
+bool auth_ntlmssp_negotiated_seal(struct auth_ntlmssp_state *ans)
+{
+       return ans->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL;
+}
+
+struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(
+                                       struct auth_ntlmssp_state *ans)
+{
+       return ans->ntlmssp_state;
+}
+
+/* Needed for 'map to guest' and 'smb username' processing */
+const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state *ans)
+{
+       return ans->ntlmssp_state->user;
+}
+
+const char *auth_ntlmssp_get_domain(struct auth_ntlmssp_state *ans)
+{
+       return ans->ntlmssp_state->domain;


-- 
Samba Shared Repository

Reply via email to