1 /* $NetBSD: heimntlm.h,v 1.1.1.2 2011/04/14 14:09:27 elric 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 */ 45 struct 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 76 #define NTLM_NEG_NTLM2_SESSION 0x00080000 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 #define NTLM_TI_AV_FLAG_GUEST 0x00000001 101 102 struct ntlm_targetinfo { 103 char *servername; /**< */ 104 char *domainname; /**< */ 105 char *dnsdomainname; /**< */ 106 char *dnsservername; /**< */ 107 char *dnstreename; /**< */ 108 uint32_t avflags; /**< */ 109 }; 110 111 /** 112 * Struct for the NTLM type1 message info, the strings is assumed to 113 * be in UTF8. When filled in by the library it should be freed with 114 * heim_ntlm_free_type1(). 115 */ 116 117 struct ntlm_type1 { 118 uint32_t flags; /**< */ 119 char *domain; /**< */ 120 char *hostname; /**< */ 121 uint32_t os[2]; /**< */ 122 }; 123 124 /** 125 * Struct for the NTLM type2 message info, the strings is assumed to 126 * be in UTF8. When filled in by the library it should be freed with 127 * heim_ntlm_free_type2(). 128 */ 129 130 struct ntlm_type2 { 131 uint32_t flags; /**< */ 132 char *targetname; /**< */ 133 struct ntlm_buf targetinfo; /**< */ 134 unsigned char challenge[8]; /**< */ 135 uint32_t context[2]; /**< */ 136 uint32_t os[2]; /**< */ 137 }; 138 139 /** 140 * Struct for the NTLM type3 message info, the strings is assumed to 141 * be in UTF8. When filled in by the library it should be freed with 142 * heim_ntlm_free_type3(). 143 */ 144 145 struct ntlm_type3 { 146 uint32_t flags; /**< */ 147 char *username; /**< */ 148 char *targetname; /**< */ 149 struct ntlm_buf lm; /**< */ 150 struct ntlm_buf ntlm; /**< */ 151 struct ntlm_buf sessionkey; /**< */ 152 char *ws; /**< */ 153 uint32_t os[2]; /**< */ 154 }; 155 156 #include <krb5/ntlm_err.h> 157 #include <krb5/heimntlm-protos.h> 158 159 #endif /* NTLM_NTLM_H */ 160