1/* $NetBSD: heimntlm.h,v 1.1.1.3 2017/01/28 20:46:52 christos Exp $ */ 2 3/* 4 * Copyright (c) 2006 Kungliga Tekniska H��gskolan 5 * (Royal Institute of Technology, Stockholm, Sweden). 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * 3. Neither the name of the Institute nor the names of its contributors 20 * may be used to endorse or promote products derived from this software 21 * without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 */ 35 36/* Id */ 37 38#ifndef HEIM_NTLM_H 39#define HEIM_NTLM_H 40 41/** 42 * Buffer for storing data in the NTLM library. When filled in by the 43 * library it should be freed with heim_ntlm_free_buf(). 44 */ 45struct ntlm_buf { 46 size_t length; /**< length buffer data */ 47 void *data; /**< pointer to the data itself */ 48}; 49 50#define NTLM_NEG_UNICODE 0x00000001 51#define NTLM_NEG_OEM 0x00000002 52#define NTLM_NEG_TARGET 0x00000004 53#define NTLM_MBZ9 0x00000008 54 55#define NTLM_NEG_SIGN 0x00000010 56#define NTLM_NEG_SEAL 0x00000020 57#define NTLM_NEG_DATAGRAM 0x00000040 58#define NTLM_NEG_LM_KEY 0x00000080 59#define NTLM_NEG_NTLM 0x00000200 60#define NTLM_NEG_ANONYMOUS 0x00000800 61 62#define NTLM_MBZ8 0x00000100 63#define NTLM_NEG_NTLM 0x00000200 64#define NTLM_NEG_NT_ONLY 0x00000400 65#define NTLM_MBZ7 0x00000800 /* anon ? */ 66 67#define NTLM_OEM_SUPPLIED_DOMAIN 0x00001000 68#define NTLM_OEM_SUPPLIED_WORKSTATION 0x00002000 69#define NTLM_MBZ6 0x00004000 /* local call ? */ 70#define NTLM_NEG_ALWAYS_SIGN 0x00008000 71 72#define NTLM_TARGET_DOMAIN 0x00010000 73#define NTLM_TARGET_SERVER 0x00020000 74 75#define NTLM_TARGET_SHARE 0x00040000 /* mbz */ 76#define NTLM_NEG_NTLM2_SESSION 0x00080000 /* EXTENDED_SESSIONSECURITY */ 77#define NTLM_NEG_NTLM2 0x00080000 78 79#define NTLM_NEG_IDENTIFY 0x00100000 80#define NTLM_MBZ5 0x00200000 81#define NTLM_NON_NT_SESSION_KEY 0x00400000 82#define NTLM_NEG_TARGET_INFO 0x00800000 83 84#define NTLM_MBZ4 0x01000000 85#define NTLM_NEG_VERSION 0x02000000 86#define NTLM_MBZ3 0x04000000 87#define NTLM_MBZ2 0x08000000 88 89#define NTLM_MBZ1 0x10000000 90#define NTLM_ENC_128 0x20000000 91#define NTLM_NEG_KEYEX 0x40000000 92#define NTLM_ENC_56 0x80000000 93 94/** 95 * Struct for the NTLM target info, the strings is assumed to be in 96 * UTF8. When filled in by the library it should be freed with 97 * heim_ntlm_free_targetinfo(). 98 */ 99 100/* avflags */ 101#define NTLM_TI_AV_FLAG_GUEST 0x00000001 102#define NTLM_TI_AV_FLAG_MIC 0x00000002 103 104struct ntlm_targetinfo { 105 char *servername; /**< */ 106 char *domainname; /**< */ 107 char *dnsdomainname; /**< */ 108 char *dnsservername; /**< */ 109 char *dnstreename; /**< */ 110 uint32_t avflags; /**< */ 111 char *targetname; 112 struct ntlm_buf channel_bindings; 113 uint64_t timestamp; 114}; 115 116/** 117 * Struct for the NTLM type1 message info, the strings is assumed to 118 * be in UTF8. When filled in by the library it should be freed with 119 * heim_ntlm_free_type1(). 120 */ 121 122struct ntlm_type1 { 123 uint32_t flags; /**< */ 124 char *domain; /**< */ 125 char *hostname; /**< */ 126 uint32_t os[2]; /**< */ 127}; 128 129/** 130 * Struct for the NTLM type2 message info, the strings is assumed to 131 * be in UTF8. When filled in by the library it should be freed with 132 * heim_ntlm_free_type2(). 133 */ 134 135struct ntlm_type2 { 136 uint32_t flags; /**< */ 137 char *targetname; /**< */ 138 struct ntlm_buf targetinfo; /**< */ 139 unsigned char challenge[8]; /**< */ 140 uint32_t context[2]; /**< */ 141 uint32_t os[2]; /**< */ 142}; 143 144/** 145 * Struct for the NTLM type3 message info, the strings is assumed to 146 * be in UTF8. When filled in by the library it should be freed with 147 * heim_ntlm_free_type3(). 148 */ 149 150struct ntlm_type3 { 151 uint32_t flags; /**< */ 152 char *username; /**< */ 153 char *targetname; /**< */ 154 struct ntlm_buf lm; /**< */ 155 struct ntlm_buf ntlm; /**< */ 156 struct ntlm_buf sessionkey; /**< */ 157 char *ws; /**< */ 158 uint32_t os[2]; /**< */ 159 size_t mic_offset; 160 uint8_t mic[16]; 161}; 162 163extern time_t heim_ntlm_time_skew; 164 165#include <krb5/ntlm_err.h> 166#include <krb5/heimntlm-protos.h> 167 168#endif /* NTLM_NTLM_H */ 169