auth/ntlmssp: add ntlmssp_version_blob()
authorStefan Metzmacher <metze@samba.org>
Tue, 24 Nov 2015 13:05:17 +0000 (14:05 +0100)
committerStefan Metzmacher <metze@samba.org>
Thu, 10 Mar 2016 05:52:28 +0000 (06:52 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
auth/ntlmssp/ntlmssp_private.h
auth/ntlmssp/ntlmssp_util.c

index ea5703ffeeae4c60aa891c7c1f869b5f71355d22..29eca35666051e51027585fd71df499bf98a80b2 100644 (file)
@@ -61,6 +61,7 @@ NTSTATUS gensec_ntlmssp_update(struct gensec_security *gensec_security,
 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);
+const DATA_BLOB ntlmssp_version_blob(void);
 
 /* The following definitions come from auth/ntlmssp_server.c  */
 
index 96a99919b7151568822c2565a571af00fef75100..bfe27f9526d0716d54118b6aaa7e7d58dc2c5a5e 100644 (file)
@@ -133,3 +133,38 @@ bool ntlmssp_blob_matches_magic(const DATA_BLOB *blob)
                return false;
        }
 }
+
+const DATA_BLOB ntlmssp_version_blob(void)
+{
+       /*
+        * This is a simplified version of
+        *
+        * enum ndr_err_code err;
+        * struct ntlmssp_VERSION vers;
+        *
+        * ZERO_STRUCT(vers);
+        * vers.ProductMajorVersion = NTLMSSP_WINDOWS_MAJOR_VERSION_6;
+        * vers.ProductMinorVersion = NTLMSSP_WINDOWS_MINOR_VERSION_1;
+        * vers.ProductBuild = 0;
+        * vers.NTLMRevisionCurrent = NTLMSSP_REVISION_W2K3;
+        *
+        * err = ndr_push_struct_blob(&version_blob,
+        *                      ntlmssp_state,
+        *                      &vers,
+        *                      (ndr_push_flags_fn_t)ndr_push_ntlmssp_VERSION);
+        *
+        * if (!NDR_ERR_CODE_IS_SUCCESS(err)) {
+        *      data_blob_free(&struct_blob);
+        *      return NT_STATUS_NO_MEMORY;
+        * }
+        */
+       static const uint8_t version_buffer[8] = {
+               NTLMSSP_WINDOWS_MAJOR_VERSION_6,
+               NTLMSSP_WINDOWS_MINOR_VERSION_1,
+               0x00, 0x00, /* product build */
+               0x00, 0x00, 0x00, /* reserved */
+               NTLMSSP_REVISION_W2K3
+       };
+
+       return data_blob_const(version_buffer, ARRAY_SIZE(version_buffer));
+}