| 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 */ | 
|---|