summaryrefslogtreecommitdiff
path: root/librpc
diff options
context:
space:
mode:
Diffstat (limited to 'librpc')
-rw-r--r--librpc/gen_ndr/ndr_ntlmssp.c16
-rw-r--r--librpc/gen_ndr/ndr_ntlmssp.h1
-rw-r--r--librpc/gen_ndr/ntlmssp.h2
-rw-r--r--librpc/idl/ntlmssp.idl30
-rw-r--r--librpc/ndr/ndr_ntlmssp.c17
-rw-r--r--librpc/ndr/ndr_ntlmssp.h2
6 files changed, 46 insertions, 22 deletions
diff --git a/librpc/gen_ndr/ndr_ntlmssp.c b/librpc/gen_ndr/ndr_ntlmssp.c
index b593d9e7e3..2b4e70e363 100644
--- a/librpc/gen_ndr/ndr_ntlmssp.c
+++ b/librpc/gen_ndr/ndr_ntlmssp.c
@@ -250,22 +250,6 @@ static enum ndr_err_code ndr_pull_ntlmssp_Version(struct ndr_pull *ndr, int ndr_
return NDR_ERR_SUCCESS;
}
-_PUBLIC_ void ndr_print_ntlmssp_Version(struct ndr_print *ndr, const char *name, const union ntlmssp_Version *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "ntlmssp_Version");
- switch (level) {
- case NTLMSSP_NEGOTIATE_VERSION:
- ndr_print_VERSION(ndr, "version", &r->version);
- break;
-
- default:
- break;
-
- }
-}
-
_PUBLIC_ enum ndr_err_code ndr_push_NEGOTIATE_MESSAGE(struct ndr_push *ndr, int ndr_flags, const struct NEGOTIATE_MESSAGE *r)
{
if (ndr_flags & NDR_SCALARS) {
diff --git a/librpc/gen_ndr/ndr_ntlmssp.h b/librpc/gen_ndr/ndr_ntlmssp.h
index ab095d1cc2..de31c6c83c 100644
--- a/librpc/gen_ndr/ndr_ntlmssp.h
+++ b/librpc/gen_ndr/ndr_ntlmssp.h
@@ -50,7 +50,6 @@ void ndr_print_LM_RESPONSE(struct ndr_print *ndr, const char *name, const struct
enum ndr_err_code ndr_push_LMv2_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct LMv2_RESPONSE *r);
enum ndr_err_code ndr_pull_LMv2_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct LMv2_RESPONSE *r);
void ndr_print_LMv2_RESPONSE(struct ndr_print *ndr, const char *name, const struct LMv2_RESPONSE *r);
-void ndr_print_ntlmssp_LM_RESPONSE(struct ndr_print *ndr, const char *name, const union ntlmssp_LM_RESPONSE *r);
enum ndr_err_code ndr_push_NTLM_RESPONSE(struct ndr_push *ndr, int ndr_flags, const struct NTLM_RESPONSE *r);
enum ndr_err_code ndr_pull_NTLM_RESPONSE(struct ndr_pull *ndr, int ndr_flags, struct NTLM_RESPONSE *r);
void ndr_print_NTLM_RESPONSE(struct ndr_print *ndr, const char *name, const struct NTLM_RESPONSE *r);
diff --git a/librpc/gen_ndr/ntlmssp.h b/librpc/gen_ndr/ntlmssp.h
index 4509915974..5205dce57d 100644
--- a/librpc/gen_ndr/ntlmssp.h
+++ b/librpc/gen_ndr/ntlmssp.h
@@ -104,7 +104,7 @@ struct VERSION {
union ntlmssp_Version {
struct VERSION version;/* [case(NTLMSSP_NEGOTIATE_VERSION)] */
-}/* [nodiscriminant] */;
+}/* [noprint,nodiscriminant] */;
struct NEGOTIATE_MESSAGE {
const char *Signature;/* [value("NTLMSSP"),charset(DOS)] */
diff --git a/librpc/idl/ntlmssp.idl b/librpc/idl/ntlmssp.idl
index 0bb30bb22e..8cabec33da 100644
--- a/librpc/idl/ntlmssp.idl
+++ b/librpc/idl/ntlmssp.idl
@@ -18,6 +18,8 @@ interface ntlmssp
NtLmAuthenticate = 0x00000003
} ntlmssp_MessageType;
+ /* [MS-NLMP] 2.2.2.5 NEGOTIATE */
+
typedef [bitmap32bit] bitmap {
NTLMSSP_NEGOTIATE_UNICODE = 0x00000001,
NTLMSSP_NEGOTIATE_OEM = 0x00000002, /* NTLM_NEGOTIATE_OEM in MS-NLMP */
@@ -82,6 +84,8 @@ interface ntlmssp
NTLMSSP_REVISION_W2K3 = 0x0F
} ntlmssp_NTLMRevisionCurrent;
+ /* [MS-NLMP] 2.2.2.10 VERSION */
+
typedef struct {
ntlmssp_WindowsMajorVersion ProductMajorVersion;
ntlmssp_WindowsMinorVersion ProductMinorVersion;
@@ -90,12 +94,12 @@ interface ntlmssp
ntlmssp_NTLMRevisionCurrent NTLMRevisionCurrent;
} VERSION;
- typedef [nodiscriminant] union {
+ typedef [noprint,nodiscriminant] union {
[case(NTLMSSP_NEGOTIATE_VERSION)] VERSION version;
[default];
} ntlmssp_Version;
- /* NTLMSSP negotiate message */
+ /* [MS-NLMP] 2.2.1.1 NEGOTIATE_MESSAGE */
typedef [public] struct {
[charset(DOS),value("NTLMSSP")] uint8 Signature[8];
@@ -124,6 +128,8 @@ interface ntlmssp
MsvChannelBindings = 10
} ntlmssp_AvId;
+ /* [MS-NLMP] 2.2.2.2 Restriction_Encoding */
+
typedef struct {
uint32 Size;
[value(0)] uint32 Z4;
@@ -152,6 +158,8 @@ interface ntlmssp
[default] [flag(NDR_REMAINING)] DATA_BLOB blob;
} ntlmssp_AvValue;
+ /* [MS-NLMP] 2.2.2.1 AV_PAIR */
+
typedef [public,flag(NDR_NOALIGN)] struct {
ntlmssp_AvId AvId;
[value(ndr_size_ntlmssp_AvValue(&r->Value, r->AvId, ndr->iconv_convenience, 0))] uint16 AvLen;
@@ -163,7 +171,7 @@ interface ntlmssp
AV_PAIR pair[count];
} AV_PAIR_LIST;
- /* NTLMSSP challenge message */
+ /* [MS-NLMP] 2.2.1.2 CHALLENGE_MESSAGE */
typedef [public,flag(NDR_PAHEX)] struct {
[charset(DOS),value("NTLMSSP")] uint8 Signature[8];
@@ -180,10 +188,14 @@ interface ntlmssp
[switch_is(NegotiateFlags & NTLMSSP_NEGOTIATE_VERSION)] ntlmssp_Version Version;
} CHALLENGE_MESSAGE;
+ /* [MS-NLMP] 2.2.2.3 LM_RESPONSE */
+
typedef [public,flag(NDR_PAHEX)] struct {
uint8 Response[24];
} LM_RESPONSE;
+ /* [MS-NLMP] 2.2.2.4 LMv2_RESPONSE */
+
typedef [public,flag(NDR_PAHEX)] struct {
uint8 Response[16];
uint8 ChallengeFromClient[8];
@@ -194,10 +206,14 @@ interface ntlmssp
[default];
} ntlmssp_LM_RESPONSE;
+ /* [MS-NLMP] 2.2.2.6 NTLM_RESPONSE */
+
typedef [public,flag(NDR_PAHEX)] struct {
uint8 Response[24];
} NTLM_RESPONSE;
+ /* [MS-NLMP] 2.2.2.7 NTLMv2_CLIENT_CHALLENGE */
+
typedef [flag(NDR_PAHEX)] struct {
[value(1)] uint8 RespType;
[value(1)] uint8 HiRespType;
@@ -209,6 +225,8 @@ interface ntlmssp
[subcontext(0)] [flag(NDR_REMAINING)] AV_PAIR_LIST AvPairs;
} NTLMv2_CLIENT_CHALLENGE;
+ /* [MS-NLMP] 2.2.2.8 NTLMv2_RESPONSE */
+
typedef [public,flag(NDR_PAHEX)] struct {
uint8 Response[16];
NTLMv2_CLIENT_CHALLENGE Challenge;
@@ -224,7 +242,7 @@ interface ntlmssp
uint8 MIC[16];
} MIC;
- /* NTLMSSP authenticate message */
+ /* [MS-NLMP] 2.2.1.3 AUTHENTICATE_MESSAGE */
typedef [public,flag(NDR_REMAINING)] struct {
[charset(DOS),value("NTLMSSP")] uint8 Signature[8];
@@ -260,6 +278,8 @@ interface ntlmssp
/* NTLMSSP signature size */
const int NTLMSSP_SIG_SIZE = 16;
+ /* [MS-NLMP] 2.2.2.9.1 NTLMSSP_MESSAGE_SIGNATURE */
+
typedef [public] struct {
[value(NTLMSSP_SIGN_VERSION)] uint32 Version;
uint32 RandomPad;
@@ -267,6 +287,8 @@ interface ntlmssp
uint32 SeqNum;
} NTLMSSP_MESSAGE_SIGNATURE;
+ /* [MS-NLMP] 2.2.2.9.2 NTLMSSP_MESSAGE_SIGNATURE for Extended Session Security */
+
typedef [public,flag(NDR_PAHEX)] struct {
[value(NTLMSSP_SIGN_VERSION)] uint32 Version;
uint8 Checksum[8];
diff --git a/librpc/ndr/ndr_ntlmssp.c b/librpc/ndr/ndr_ntlmssp.c
index 5c28726f55..4808aa5f5f 100644
--- a/librpc/ndr/ndr_ntlmssp.c
+++ b/librpc/ndr/ndr_ntlmssp.c
@@ -162,3 +162,20 @@ _PUBLIC_ void ndr_print_ntlmssp_lm_response(TALLOC_CTX *mem_ctx,
}
}
}
+
+_PUBLIC_ void ndr_print_ntlmssp_Version(struct ndr_print *ndr, const char *name, const union ntlmssp_Version *r)
+{
+ int level;
+ level = ndr_print_get_switch_value(ndr, r);
+ switch (level) {
+ case NTLMSSP_NEGOTIATE_VERSION:
+ ndr_print_VERSION(ndr, name, &r->version);
+ break;
+
+ default:
+ break;
+
+ }
+}
+
+
diff --git a/librpc/ndr/ndr_ntlmssp.h b/librpc/ndr/ndr_ntlmssp.h
index 6d76be20ca..b574f15495 100644
--- a/librpc/ndr/ndr_ntlmssp.h
+++ b/librpc/ndr/ndr_ntlmssp.h
@@ -31,3 +31,5 @@ _PUBLIC_ void ndr_print_ntlmssp_lm_response(TALLOC_CTX *mem_ctx,
struct smb_iconv_convenience *ic,
const DATA_BLOB *lm_response,
bool ntlmv2);
+_PUBLIC_ void ndr_print_ntlmssp_Version(struct ndr_print *ndr, const char *name, const union ntlmssp_Version *r);
+