s3-auth set session_info->sanitized_username in create_local_token()
[amitay/samba.git] / source3 / libsmb / ntlmssp_wrap.c
index 43cde19b3b70d86e1e93c6828f508861610443d7..ba22300cab216ae54fae391e7a7d13b55c9313bc 100644 (file)
@@ -111,20 +111,6 @@ bool auth_ntlmssp_negotiated_seal(struct auth_ntlmssp_state *ans)
        return ans->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL;
 }
 
-/* Needed for 'smb username' processing */
-const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state *ans)
-{
-       if (ans->gensec_security) {
-               return ""; /* We can't get at this value, and it's just for the %U macros */
-       }
-       return ans->ntlmssp_state->user;
-}
-
-const uint8_t *auth_ntlmssp_get_nt_hash(struct auth_ntlmssp_state *ans)
-{
-       return ans->ntlmssp_state->nt_hash;
-}
-
 NTSTATUS auth_ntlmssp_set_username(struct auth_ntlmssp_state *ans,
                                   const char *user)
 {
@@ -143,16 +129,6 @@ NTSTATUS auth_ntlmssp_set_password(struct auth_ntlmssp_state *ans,
        return ntlmssp_set_password(ans->ntlmssp_state, password);
 }
 
-void auth_ntlmssp_and_flags(struct auth_ntlmssp_state *ans, uint32_t flags)
-{
-       ans->ntlmssp_state->neg_flags &= flags;
-}
-
-void auth_ntlmssp_or_flags(struct auth_ntlmssp_state *ans, uint32_t flags)
-{
-       ans->ntlmssp_state->neg_flags |= flags;
-}
-
 void auth_ntlmssp_want_feature(struct auth_ntlmssp_state *ans, uint32_t feature)
 {
        if (ans->gensec_security) {
@@ -186,12 +162,19 @@ DATA_BLOB auth_ntlmssp_get_session_key(struct auth_ntlmssp_state *ans, TALLOC_CT
 }
 
 NTSTATUS auth_ntlmssp_update(struct auth_ntlmssp_state *ans,
+                            TALLOC_CTX *mem_ctx,
                             const DATA_BLOB request, DATA_BLOB *reply)
 {
+       NTSTATUS status;
        if (ans->gensec_security) {
-               return gensec_update(ans->gensec_security, ans, request, reply);
+               return gensec_update(ans->gensec_security, mem_ctx, request, reply);
+       }
+       status = ntlmssp_update(ans->ntlmssp_state, request, reply);
+       if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
+               return status;
        }
-       return ntlmssp_update(ans->ntlmssp_state, request, reply);
+       talloc_steal(mem_ctx, reply->data);
+       return status;
 }
 
 NTSTATUS auth_ntlmssp_client_start(TALLOC_CTX *mem_ctx,