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