19#ifndef PROTOCORE_NTLMSSP_H
20#define PROTOCORE_NTLMSSP_H
35 static constexpr uint32_t NTLMSSP_NEGOTIATE_UNICODE = 0x00000001;
36 static constexpr uint32_t NTLMSSP_REQUEST_TARGET = 0x00000004;
37 static constexpr uint32_t NTLMSSP_NEGOTIATE_NTLM = 0x00000200;
38 static constexpr uint32_t NTLMSSP_NEGOTIATE_ALWAYS_SIGN = 0x00008000;
39 static constexpr uint32_t NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY = 0x00080000;
40 static constexpr uint32_t NTLMSSP_NEGOTIATE_TARGET_INFO = 0x00800000;
41 static constexpr uint32_t NTLMSSP_NEGOTIATE_VERSION = 0x02000000;
42 static constexpr uint32_t NTLMSSP_NEGOTIATE_128 = 0x20000000;
43 static constexpr uint32_t NTLMSSP_NEGOTIATE_56 = 0x80000000;
45 static constexpr uint32_t NTLMSSP_CLIENT_DEFAULT_FLAGS = NTLMSSP_NEGOTIATE_UNICODE | NTLMSSP_REQUEST_TARGET |
46 NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_ALWAYS_SIGN |
47 NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY;
54 uint8_t server_challenge[8];
55 const uint8_t *target_info;
56 uint16_t target_info_len;
63size_t pc_ntlmssp_build_negotiate(uint8_t *buf,
size_t cap, uint32_t flags);
71bool pc_ntlmssp_parse_challenge(
const uint8_t *msg,
size_t len, NtlmChallenge *out);
78#define PC_NTLMSSP_MIC_OFFSET 72
81#define PC_NTLMSSP_MIC_LEN 16
96size_t pc_ntlmssp_build_authenticate(uint8_t *buf,
size_t cap,
const uint8_t *lm_resp,
size_t lm_len,
97 const uint8_t *nt_resp,
size_t nt_len,
const char *domain,
const char *user,
98 const char *workstation, uint32_t flags,
bool with_mic =
false);
User-facing configuration for ProtoCore.