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: heimntlm.h 22376 2007-12-28 18:38:23Z lha $ */ 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_TARGET 0x00000004 50 #define NTLM_NEG_SIGN 0x00000010 51 #define NTLM_NEG_SEAL 0x00000020 52 #define NTLM_NEG_NTLM 0x00000200 53 54 #define NTLM_SUPPLIED_DOMAIN 0x00001000 55 #define NTLM_SUPPLIED_WORKSTAION 0x00002000 56 57 #define NTLM_NEG_ALWAYS_SIGN 0x00008000 58 #define NTLM_NEG_NTLM2_SESSION 0x00080000 59 60 #define NTLM_TARGET_DOMAIN 0x00010000 61 #define NTLM_TARGET_SERVER 0x00020000 62 #define NTLM_ENC_128 0x20000000 63 #define NTLM_NEG_KEYEX 0x40000000 64 65 /** 66 * Struct for the NTLM target info, the strings is assumed to be in 67 * UTF8. When filled in by the library it should be freed with 68 * heim_ntlm_free_targetinfo(). 69 */ 70 struct ntlm_targetinfo { 71 char *servername; /**< */ 72 char *domainname; /**< */ 73 char *dnsdomainname; /**< */ 74 char *dnsservername; /**< */ 75 }; 76 77 /** 78 * Struct for the NTLM type1 message info, the strings is assumed to 79 * be in UTF8. When filled in by the library it should be freed with 80 * heim_ntlm_free_type1(). 81 */ 82 83 struct ntlm_type1 { 84 uint32_t flags; /**< */ 85 char *domain; /**< */ 86 char *hostname; /**< */ 87 uint32_t os[2]; /**< */ 88 }; 89 90 /** 91 * Struct for the NTLM type2 message info, the strings is assumed to 92 * be in UTF8. When filled in by the library it should be freed with 93 * heim_ntlm_free_type2(). 94 */ 95 96 struct ntlm_type2 { 97 uint32_t flags; /**< */ 98 char *targetname; /**< */ 99 struct ntlm_buf targetinfo; /**< */ 100 unsigned char challange[8]; /**< */ 101 uint32_t context[2]; /**< */ 102 uint32_t os[2]; /**< */ 103 }; 104 105 /** 106 * Struct for the NTLM type3 message info, the strings is assumed to 107 * be in UTF8. When filled in by the library it should be freed with 108 * heim_ntlm_free_type3(). 109 */ 110 111 struct ntlm_type3 { 112 uint32_t flags; /**< */ 113 char *username; /**< */ 114 char *targetname; /**< */ 115 struct ntlm_buf lm; /**< */ 116 struct ntlm_buf ntlm; /**< */ 117 struct ntlm_buf sessionkey; /**< */ 118 char *ws; /**< */ 119 uint32_t os[2]; /**< */ 120 }; 121 122 #include <heimntlm-protos.h> 123 124 #endif /* NTLM_NTLM_H */ 125