1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 3<title>Heimdalntlmlibrary: Heimdal NTLM library</title> 4<link href="doxygen.css" rel="stylesheet" type="text/css"> 5<link href="tabs.css" rel="stylesheet" type="text/css"> 6</head><body> 7<p> 8<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a> 9</p> 10<!-- end of header marker --> 11<!-- Generated by Doxygen 1.5.6 --> 12<div class="navigation" id="top"> 13 <div class="tabs"> 14 <ul> 15 <li><a href="index.html"><span>Main Page</span></a></li> 16 <li><a href="modules.html"><span>Modules</span></a></li> 17 <li><a href="annotated.html"><span>Data Structures</span></a></li> 18 <li><a href="examples.html"><span>Examples</span></a></li> 19 </ul> 20 </div> 21</div> 22<div class="contents"> 23<h1>Heimdal NTLM library</h1><table border="0" cellpadding="0" cellspacing="0"> 24<tr><td></td></tr> 25<tr><td colspan="2"><br><h2>Functions</h2></td></tr> 26<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf</a> (struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *p)</td></tr> 27 28<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g704ec8c5dba05ef57186d242ff165565">heim_ntlm_free_targetinfo</a> (struct ntlm_targetinfo *ti)</td></tr> 29 30<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g2881747fad2ac2979a28d3bd050b0fa8">heim_ntlm_encode_targetinfo</a> (const struct ntlm_targetinfo *ti, int ucs2, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr> 31 32<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gf1d4de2faec8b1c1070a55fd2e6e630f">heim_ntlm_decode_targetinfo</a> (const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data, int ucs2, struct ntlm_targetinfo *ti)</td></tr> 33 34<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g76fa6caf3f539e24008e31613f5eb663">heim_ntlm_free_type1</a> (struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> *data)</td></tr> 35 36<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g0107727234287ac61a8801b0faff9dff">heim_ntlm_encode_type1</a> (const struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> *type1, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr> 37 38<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g8fde84c86f1c7c9f730f7fb4acedcb43">heim_ntlm_free_type2</a> (struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> *data)</td></tr> 39 40<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g2860c6f6d497255eb433adc8cacc49dd">heim_ntlm_encode_type2</a> (const struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> *type2, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr> 41 42<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gc4e6d01e5247b8540d41ccbbf1031319">heim_ntlm_free_type3</a> (struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> *data)</td></tr> 43 44<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g9cf026be6e602c22d62aa9e47e85c7c2">heim_ntlm_encode_type3</a> (const struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> *type3, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *data)</td></tr> 45 46<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g254ee0a4d5a2594833e36697ad575d7e">heim_ntlm_nt_key</a> (const char *password, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *key)</td></tr> 47 48<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#ge3b634802ef94233a175291abd2ea14d">heim_ntlm_calculate_ntlm1</a> (void *key, size_t len, unsigned char challenge[8], struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer)</td></tr> 49 50<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gd09935f9ccecb9fb2917d68fb82ec3d6">heim_ntlm_build_ntlm1_master</a> (void *key, size_t len, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *session, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *master)</td></tr> 51 52<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#gd189a009fcac6cba44678b6a0aef81e0">heim_ntlm_build_ntlm2_master</a> (void *key, size_t len, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *blob, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *session, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *master)</td></tr> 53 54<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g6ef0049af05a83d73b7a3d962e679c2a">heim_ntlm_keyex_unwrap</a> (struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *baseKey, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *encryptedSession, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *session)</td></tr> 55 56<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g4c4c32652527acead6848052615ae284">heim_ntlm_ntlmv2_key</a> (const void *key, size_t len, const char *username, const char *target, unsigned char ntlmv2[16])</td></tr> 57 58<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g9bc09732da698d0f2d8c9d41e60d764d">heim_ntlm_calculate_lm2</a> (const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], unsigned char ntlmv2[16], struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer)</td></tr> 59 60<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#ga8f07fb71a0d5f095cde3fb9fb40d10c">heim_ntlm_calculate_ntlm2</a> (const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *infotarget, unsigned char ntlmv2[16], struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer)</td></tr> 61 62<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ntlm__core.html#g3b3d6a5187cab6bfe656afa7a8273ca6">heim_ntlm_verify_ntlm2</a> (const void *key, size_t len, const char *username, const char *target, time_t now, const unsigned char serverchallenge[8], const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *answer, struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> *infotarget, unsigned char ntlmv2[16])</td></tr> 63 64</table> 65<hr><a name="_details"></a><h2>Detailed Description</h2> 66The NTLM core functions implement the string2key generation function, message encode and decode function, and the hash function functions. <hr><h2>Function Documentation</h2> 67<a class="anchor" name="gd09935f9ccecb9fb2917d68fb82ec3d6"></a><!-- doxytag: member="ntlm.c::heim_ntlm_build_ntlm1_master" ref="gd09935f9ccecb9fb2917d68fb82ec3d6" args="(void *key, size_t len, struct ntlm_buf *session, struct ntlm_buf *master)" --> 68<div class="memitem"> 69<div class="memproto"> 70 <table class="memname"> 71 <tr> 72 <td class="memname">int heim_ntlm_build_ntlm1_master </td> 73 <td>(</td> 74 <td class="paramtype">void * </td> 75 <td class="paramname"> <em>key</em>, </td> 76 </tr> 77 <tr> 78 <td class="paramkey"></td> 79 <td></td> 80 <td class="paramtype">size_t </td> 81 <td class="paramname"> <em>len</em>, </td> 82 </tr> 83 <tr> 84 <td class="paramkey"></td> 85 <td></td> 86 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 87 <td class="paramname"> <em>session</em>, </td> 88 </tr> 89 <tr> 90 <td class="paramkey"></td> 91 <td></td> 92 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 93 <td class="paramname"> <em>master</em></td><td> </td> 94 </tr> 95 <tr> 96 <td></td> 97 <td>)</td> 98 <td></td><td></td><td></td> 99 </tr> 100 </table> 101</div> 102<div class="memdoc"> 103 104<p> 105Generates an NTLMv1 session random with assosited session master key.<p> 106<dl compact><dt><b>Parameters:</b></dt><dd> 107 <table border="0" cellspacing="2" cellpadding="0"> 108 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the ntlm v1 key </td></tr> 109 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 110 <tr><td valign="top"></td><td valign="top"><em>session</em> </td><td>generated session nonce, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. </td></tr> 111 <tr><td valign="top"></td><td valign="top"><em>master</em> </td><td>calculated session master key, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 112 </table> 113</dl> 114<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 115 116</div> 117</div><p> 118<a class="anchor" name="gd189a009fcac6cba44678b6a0aef81e0"></a><!-- doxytag: member="ntlm.c::heim_ntlm_build_ntlm2_master" ref="gd189a009fcac6cba44678b6a0aef81e0" args="(void *key, size_t len, struct ntlm_buf *blob, struct ntlm_buf *session, struct ntlm_buf *master)" --> 119<div class="memitem"> 120<div class="memproto"> 121 <table class="memname"> 122 <tr> 123 <td class="memname">int heim_ntlm_build_ntlm2_master </td> 124 <td>(</td> 125 <td class="paramtype">void * </td> 126 <td class="paramname"> <em>key</em>, </td> 127 </tr> 128 <tr> 129 <td class="paramkey"></td> 130 <td></td> 131 <td class="paramtype">size_t </td> 132 <td class="paramname"> <em>len</em>, </td> 133 </tr> 134 <tr> 135 <td class="paramkey"></td> 136 <td></td> 137 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 138 <td class="paramname"> <em>blob</em>, </td> 139 </tr> 140 <tr> 141 <td class="paramkey"></td> 142 <td></td> 143 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 144 <td class="paramname"> <em>session</em>, </td> 145 </tr> 146 <tr> 147 <td class="paramkey"></td> 148 <td></td> 149 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 150 <td class="paramname"> <em>master</em></td><td> </td> 151 </tr> 152 <tr> 153 <td></td> 154 <td>)</td> 155 <td></td><td></td><td></td> 156 </tr> 157 </table> 158</div> 159<div class="memdoc"> 160 161<p> 162Generates an NTLMv2 session random with associated session master key.<p> 163<dl compact><dt><b>Parameters:</b></dt><dd> 164 <table border="0" cellspacing="2" cellpadding="0"> 165 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the NTLMv2 key </td></tr> 166 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 167 <tr><td valign="top"></td><td valign="top"><em>blob</em> </td><td>the NTLMv2 "blob" </td></tr> 168 <tr><td valign="top"></td><td valign="top"><em>session</em> </td><td>generated session nonce, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. </td></tr> 169 <tr><td valign="top"></td><td valign="top"><em>master</em> </td><td>calculated session master key, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 170 </table> 171</dl> 172<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 173 174</div> 175</div><p> 176<a class="anchor" name="g9bc09732da698d0f2d8c9d41e60d764d"></a><!-- doxytag: member="ntlm.c::heim_ntlm_calculate_lm2" ref="g9bc09732da698d0f2d8c9d41e60d764d" args="(const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], unsigned char ntlmv2[16], struct ntlm_buf *answer)" --> 177<div class="memitem"> 178<div class="memproto"> 179 <table class="memname"> 180 <tr> 181 <td class="memname">int heim_ntlm_calculate_lm2 </td> 182 <td>(</td> 183 <td class="paramtype">const void * </td> 184 <td class="paramname"> <em>key</em>, </td> 185 </tr> 186 <tr> 187 <td class="paramkey"></td> 188 <td></td> 189 <td class="paramtype">size_t </td> 190 <td class="paramname"> <em>len</em>, </td> 191 </tr> 192 <tr> 193 <td class="paramkey"></td> 194 <td></td> 195 <td class="paramtype">const char * </td> 196 <td class="paramname"> <em>username</em>, </td> 197 </tr> 198 <tr> 199 <td class="paramkey"></td> 200 <td></td> 201 <td class="paramtype">const char * </td> 202 <td class="paramname"> <em>target</em>, </td> 203 </tr> 204 <tr> 205 <td class="paramkey"></td> 206 <td></td> 207 <td class="paramtype">const unsigned char </td> 208 <td class="paramname"> <em>serverchallenge</em>[8], </td> 209 </tr> 210 <tr> 211 <td class="paramkey"></td> 212 <td></td> 213 <td class="paramtype">unsigned char </td> 214 <td class="paramname"> <em>ntlmv2</em>[16], </td> 215 </tr> 216 <tr> 217 <td class="paramkey"></td> 218 <td></td> 219 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 220 <td class="paramname"> <em>answer</em></td><td> </td> 221 </tr> 222 <tr> 223 <td></td> 224 <td>)</td> 225 <td></td><td></td><td></td> 226 </tr> 227 </table> 228</div> 229<div class="memdoc"> 230 231<p> 232Calculate LMv2 response<p> 233<dl compact><dt><b>Parameters:</b></dt><dd> 234 <table border="0" cellspacing="2" cellpadding="0"> 235 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the ntlm key </td></tr> 236 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 237 <tr><td valign="top"></td><td valign="top"><em>username</em> </td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr> 238 <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>the name of the target, assumed to be in UTF8. </td></tr> 239 <tr><td valign="top"></td><td valign="top"><em>serverchallenge</em> </td><td>challenge as sent by the server in the type2 message. </td></tr> 240 <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em> </td><td>calculated session key </td></tr> 241 <tr><td valign="top"></td><td valign="top"><em>answer</em> </td><td>ntlm response answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 242 </table> 243</dl> 244<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 245 246</div> 247</div><p> 248<a class="anchor" name="ge3b634802ef94233a175291abd2ea14d"></a><!-- doxytag: member="ntlm.c::heim_ntlm_calculate_ntlm1" ref="ge3b634802ef94233a175291abd2ea14d" args="(void *key, size_t len, unsigned char challenge[8], struct ntlm_buf *answer)" --> 249<div class="memitem"> 250<div class="memproto"> 251 <table class="memname"> 252 <tr> 253 <td class="memname">int heim_ntlm_calculate_ntlm1 </td> 254 <td>(</td> 255 <td class="paramtype">void * </td> 256 <td class="paramname"> <em>key</em>, </td> 257 </tr> 258 <tr> 259 <td class="paramkey"></td> 260 <td></td> 261 <td class="paramtype">size_t </td> 262 <td class="paramname"> <em>len</em>, </td> 263 </tr> 264 <tr> 265 <td class="paramkey"></td> 266 <td></td> 267 <td class="paramtype">unsigned char </td> 268 <td class="paramname"> <em>challenge</em>[8], </td> 269 </tr> 270 <tr> 271 <td class="paramkey"></td> 272 <td></td> 273 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 274 <td class="paramname"> <em>answer</em></td><td> </td> 275 </tr> 276 <tr> 277 <td></td> 278 <td>)</td> 279 <td></td><td></td><td></td> 280 </tr> 281 </table> 282</div> 283<div class="memdoc"> 284 285<p> 286Calculate NTLMv1 response hash<p> 287<dl compact><dt><b>Parameters:</b></dt><dd> 288 <table border="0" cellspacing="2" cellpadding="0"> 289 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the ntlm v1 key </td></tr> 290 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 291 <tr><td valign="top"></td><td valign="top"><em>challenge</em> </td><td>sent by the server </td></tr> 292 <tr><td valign="top"></td><td valign="top"><em>answer</em> </td><td>calculated answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 293 </table> 294</dl> 295<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 296 297</div> 298</div><p> 299<a class="anchor" name="ga8f07fb71a0d5f095cde3fb9fb40d10c"></a><!-- doxytag: member="ntlm.c::heim_ntlm_calculate_ntlm2" ref="ga8f07fb71a0d5f095cde3fb9fb40d10c" args="(const void *key, size_t len, const char *username, const char *target, const unsigned char serverchallenge[8], const struct ntlm_buf *infotarget, unsigned char ntlmv2[16], struct ntlm_buf *answer)" --> 300<div class="memitem"> 301<div class="memproto"> 302 <table class="memname"> 303 <tr> 304 <td class="memname">int heim_ntlm_calculate_ntlm2 </td> 305 <td>(</td> 306 <td class="paramtype">const void * </td> 307 <td class="paramname"> <em>key</em>, </td> 308 </tr> 309 <tr> 310 <td class="paramkey"></td> 311 <td></td> 312 <td class="paramtype">size_t </td> 313 <td class="paramname"> <em>len</em>, </td> 314 </tr> 315 <tr> 316 <td class="paramkey"></td> 317 <td></td> 318 <td class="paramtype">const char * </td> 319 <td class="paramname"> <em>username</em>, </td> 320 </tr> 321 <tr> 322 <td class="paramkey"></td> 323 <td></td> 324 <td class="paramtype">const char * </td> 325 <td class="paramname"> <em>target</em>, </td> 326 </tr> 327 <tr> 328 <td class="paramkey"></td> 329 <td></td> 330 <td class="paramtype">const unsigned char </td> 331 <td class="paramname"> <em>serverchallenge</em>[8], </td> 332 </tr> 333 <tr> 334 <td class="paramkey"></td> 335 <td></td> 336 <td class="paramtype">const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 337 <td class="paramname"> <em>infotarget</em>, </td> 338 </tr> 339 <tr> 340 <td class="paramkey"></td> 341 <td></td> 342 <td class="paramtype">unsigned char </td> 343 <td class="paramname"> <em>ntlmv2</em>[16], </td> 344 </tr> 345 <tr> 346 <td class="paramkey"></td> 347 <td></td> 348 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 349 <td class="paramname"> <em>answer</em></td><td> </td> 350 </tr> 351 <tr> 352 <td></td> 353 <td>)</td> 354 <td></td><td></td><td></td> 355 </tr> 356 </table> 357</div> 358<div class="memdoc"> 359 360<p> 361Calculate NTLMv2 response<p> 362<dl compact><dt><b>Parameters:</b></dt><dd> 363 <table border="0" cellspacing="2" cellpadding="0"> 364 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the ntlm key </td></tr> 365 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 366 <tr><td valign="top"></td><td valign="top"><em>username</em> </td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr> 367 <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>the name of the target, assumed to be in UTF8. </td></tr> 368 <tr><td valign="top"></td><td valign="top"><em>serverchallenge</em> </td><td>challenge as sent by the server in the type2 message. </td></tr> 369 <tr><td valign="top"></td><td valign="top"><em>infotarget</em> </td><td>infotarget as sent by the server in the type2 message. </td></tr> 370 <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em> </td><td>calculated session key </td></tr> 371 <tr><td valign="top"></td><td valign="top"><em>answer</em> </td><td>ntlm response answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 372 </table> 373</dl> 374<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 375 376</div> 377</div><p> 378<a class="anchor" name="gf1d4de2faec8b1c1070a55fd2e6e630f"></a><!-- doxytag: member="ntlm.c::heim_ntlm_decode_targetinfo" ref="gf1d4de2faec8b1c1070a55fd2e6e630f" args="(const struct ntlm_buf *data, int ucs2, struct ntlm_targetinfo *ti)" --> 379<div class="memitem"> 380<div class="memproto"> 381 <table class="memname"> 382 <tr> 383 <td class="memname">int heim_ntlm_decode_targetinfo </td> 384 <td>(</td> 385 <td class="paramtype">const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 386 <td class="paramname"> <em>data</em>, </td> 387 </tr> 388 <tr> 389 <td class="paramkey"></td> 390 <td></td> 391 <td class="paramtype">int </td> 392 <td class="paramname"> <em>ucs2</em>, </td> 393 </tr> 394 <tr> 395 <td class="paramkey"></td> 396 <td></td> 397 <td class="paramtype">struct ntlm_targetinfo * </td> 398 <td class="paramname"> <em>ti</em></td><td> </td> 399 </tr> 400 <tr> 401 <td></td> 402 <td>)</td> 403 <td></td><td></td><td></td> 404 </tr> 405 </table> 406</div> 407<div class="memdoc"> 408 409<p> 410Decodes an NTLM targetinfo message<p> 411<dl compact><dt><b>Parameters:</b></dt><dd> 412 <table border="0" cellspacing="2" cellpadding="0"> 413 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>input data buffer with the encode NTLM targetinfo message </td></tr> 414 <tr><td valign="top"></td><td valign="top"><em>ucs2</em> </td><td>if the strings should be encoded with ucs2 (selected by flag in message). </td></tr> 415 <tr><td valign="top"></td><td valign="top"><em>ti</em> </td><td>the decoded target info, should be freed with <a class="el" href="group__ntlm__core.html#g704ec8c5dba05ef57186d242ff165565">heim_ntlm_free_targetinfo()</a>.</td></tr> 416 </table> 417</dl> 418<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 419 420</div> 421</div><p> 422<a class="anchor" name="g2881747fad2ac2979a28d3bd050b0fa8"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_targetinfo" ref="g2881747fad2ac2979a28d3bd050b0fa8" args="(const struct ntlm_targetinfo *ti, int ucs2, struct ntlm_buf *data)" --> 423<div class="memitem"> 424<div class="memproto"> 425 <table class="memname"> 426 <tr> 427 <td class="memname">int heim_ntlm_encode_targetinfo </td> 428 <td>(</td> 429 <td class="paramtype">const struct ntlm_targetinfo * </td> 430 <td class="paramname"> <em>ti</em>, </td> 431 </tr> 432 <tr> 433 <td class="paramkey"></td> 434 <td></td> 435 <td class="paramtype">int </td> 436 <td class="paramname"> <em>ucs2</em>, </td> 437 </tr> 438 <tr> 439 <td class="paramkey"></td> 440 <td></td> 441 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 442 <td class="paramname"> <em>data</em></td><td> </td> 443 </tr> 444 <tr> 445 <td></td> 446 <td>)</td> 447 <td></td><td></td><td></td> 448 </tr> 449 </table> 450</div> 451<div class="memdoc"> 452 453<p> 454Encodes a ntlm_targetinfo message.<p> 455<dl compact><dt><b>Parameters:</b></dt><dd> 456 <table border="0" cellspacing="2" cellpadding="0"> 457 <tr><td valign="top"></td><td valign="top"><em>ti</em> </td><td>the ntlm_targetinfo message to encode. </td></tr> 458 <tr><td valign="top"></td><td valign="top"><em>ucs2</em> </td><td>ignored </td></tr> 459 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 460 </table> 461</dl> 462<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 463 464</div> 465</div><p> 466<a class="anchor" name="g0107727234287ac61a8801b0faff9dff"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_type1" ref="g0107727234287ac61a8801b0faff9dff" args="(const struct ntlm_type1 *type1, struct ntlm_buf *data)" --> 467<div class="memitem"> 468<div class="memproto"> 469 <table class="memname"> 470 <tr> 471 <td class="memname">int heim_ntlm_encode_type1 </td> 472 <td>(</td> 473 <td class="paramtype">const struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> * </td> 474 <td class="paramname"> <em>type1</em>, </td> 475 </tr> 476 <tr> 477 <td class="paramkey"></td> 478 <td></td> 479 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 480 <td class="paramname"> <em>data</em></td><td> </td> 481 </tr> 482 <tr> 483 <td></td> 484 <td>)</td> 485 <td></td><td></td><td></td> 486 </tr> 487 </table> 488</div> 489<div class="memdoc"> 490 491<p> 492Encodes an <a class="el" href="structntlm__type1.html">ntlm_type1</a> message.<p> 493<dl compact><dt><b>Parameters:</b></dt><dd> 494 <table border="0" cellspacing="2" cellpadding="0"> 495 <tr><td valign="top"></td><td valign="top"><em>type1</em> </td><td>the <a class="el" href="structntlm__type1.html">ntlm_type1</a> message to encode. </td></tr> 496 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 497 </table> 498</dl> 499<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 500 501</div> 502</div><p> 503<a class="anchor" name="g2860c6f6d497255eb433adc8cacc49dd"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_type2" ref="g2860c6f6d497255eb433adc8cacc49dd" args="(const struct ntlm_type2 *type2, struct ntlm_buf *data)" --> 504<div class="memitem"> 505<div class="memproto"> 506 <table class="memname"> 507 <tr> 508 <td class="memname">int heim_ntlm_encode_type2 </td> 509 <td>(</td> 510 <td class="paramtype">const struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> * </td> 511 <td class="paramname"> <em>type2</em>, </td> 512 </tr> 513 <tr> 514 <td class="paramkey"></td> 515 <td></td> 516 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 517 <td class="paramname"> <em>data</em></td><td> </td> 518 </tr> 519 <tr> 520 <td></td> 521 <td>)</td> 522 <td></td><td></td><td></td> 523 </tr> 524 </table> 525</div> 526<div class="memdoc"> 527 528<p> 529Encodes an <a class="el" href="structntlm__type2.html">ntlm_type2</a> message.<p> 530<dl compact><dt><b>Parameters:</b></dt><dd> 531 <table border="0" cellspacing="2" cellpadding="0"> 532 <tr><td valign="top"></td><td valign="top"><em>type2</em> </td><td>the <a class="el" href="structntlm__type2.html">ntlm_type2</a> message to encode. </td></tr> 533 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 534 </table> 535</dl> 536<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 537 538</div> 539</div><p> 540<a class="anchor" name="g9cf026be6e602c22d62aa9e47e85c7c2"></a><!-- doxytag: member="ntlm.c::heim_ntlm_encode_type3" ref="g9cf026be6e602c22d62aa9e47e85c7c2" args="(const struct ntlm_type3 *type3, struct ntlm_buf *data)" --> 541<div class="memitem"> 542<div class="memproto"> 543 <table class="memname"> 544 <tr> 545 <td class="memname">int heim_ntlm_encode_type3 </td> 546 <td>(</td> 547 <td class="paramtype">const struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> * </td> 548 <td class="paramname"> <em>type3</em>, </td> 549 </tr> 550 <tr> 551 <td class="paramkey"></td> 552 <td></td> 553 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 554 <td class="paramname"> <em>data</em></td><td> </td> 555 </tr> 556 <tr> 557 <td></td> 558 <td>)</td> 559 <td></td><td></td><td></td> 560 </tr> 561 </table> 562</div> 563<div class="memdoc"> 564 565<p> 566Encodes an <a class="el" href="structntlm__type3.html">ntlm_type3</a> message.<p> 567<dl compact><dt><b>Parameters:</b></dt><dd> 568 <table border="0" cellspacing="2" cellpadding="0"> 569 <tr><td valign="top"></td><td valign="top"><em>type3</em> </td><td>the <a class="el" href="structntlm__type3.html">ntlm_type3</a> message to encode. </td></tr> 570 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>is the return buffer with the encoded message, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 571 </table> 572</dl> 573<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 574 575</div> 576</div><p> 577<a class="anchor" name="g5f6c313a3a7258cda5f09bb44f8d1776"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_buf" ref="g5f6c313a3a7258cda5f09bb44f8d1776" args="(struct ntlm_buf *p)" --> 578<div class="memitem"> 579<div class="memproto"> 580 <table class="memname"> 581 <tr> 582 <td class="memname">void heim_ntlm_free_buf </td> 583 <td>(</td> 584 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 585 <td class="paramname"> <em>p</em> </td> 586 <td> ) </td> 587 <td></td> 588 </tr> 589 </table> 590</div> 591<div class="memdoc"> 592 593<p> 594heim_ntlm_free_buf frees the ntlm buffer<p> 595<dl compact><dt><b>Parameters:</b></dt><dd> 596 <table border="0" cellspacing="2" cellpadding="0"> 597 <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>buffer to be freed </td></tr> 598 </table> 599</dl> 600 601</div> 602</div><p> 603<a class="anchor" name="g704ec8c5dba05ef57186d242ff165565"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_targetinfo" ref="g704ec8c5dba05ef57186d242ff165565" args="(struct ntlm_targetinfo *ti)" --> 604<div class="memitem"> 605<div class="memproto"> 606 <table class="memname"> 607 <tr> 608 <td class="memname">void heim_ntlm_free_targetinfo </td> 609 <td>(</td> 610 <td class="paramtype">struct ntlm_targetinfo * </td> 611 <td class="paramname"> <em>ti</em> </td> 612 <td> ) </td> 613 <td></td> 614 </tr> 615 </table> 616</div> 617<div class="memdoc"> 618 619<p> 620Frees the ntlm_targetinfo message<p> 621<dl compact><dt><b>Parameters:</b></dt><dd> 622 <table border="0" cellspacing="2" cellpadding="0"> 623 <tr><td valign="top"></td><td valign="top"><em>ti</em> </td><td>targetinfo to be freed </td></tr> 624 </table> 625</dl> 626 627</div> 628</div><p> 629<a class="anchor" name="g76fa6caf3f539e24008e31613f5eb663"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_type1" ref="g76fa6caf3f539e24008e31613f5eb663" args="(struct ntlm_type1 *data)" --> 630<div class="memitem"> 631<div class="memproto"> 632 <table class="memname"> 633 <tr> 634 <td class="memname">void heim_ntlm_free_type1 </td> 635 <td>(</td> 636 <td class="paramtype">struct <a class="el" href="structntlm__type1.html">ntlm_type1</a> * </td> 637 <td class="paramname"> <em>data</em> </td> 638 <td> ) </td> 639 <td></td> 640 </tr> 641 </table> 642</div> 643<div class="memdoc"> 644 645<p> 646Frees the <a class="el" href="structntlm__type1.html">ntlm_type1</a> message<p> 647<dl compact><dt><b>Parameters:</b></dt><dd> 648 <table border="0" cellspacing="2" cellpadding="0"> 649 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>message to be freed </td></tr> 650 </table> 651</dl> 652 653</div> 654</div><p> 655<a class="anchor" name="g8fde84c86f1c7c9f730f7fb4acedcb43"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_type2" ref="g8fde84c86f1c7c9f730f7fb4acedcb43" args="(struct ntlm_type2 *data)" --> 656<div class="memitem"> 657<div class="memproto"> 658 <table class="memname"> 659 <tr> 660 <td class="memname">void heim_ntlm_free_type2 </td> 661 <td>(</td> 662 <td class="paramtype">struct <a class="el" href="structntlm__type2.html">ntlm_type2</a> * </td> 663 <td class="paramname"> <em>data</em> </td> 664 <td> ) </td> 665 <td></td> 666 </tr> 667 </table> 668</div> 669<div class="memdoc"> 670 671<p> 672Frees the <a class="el" href="structntlm__type2.html">ntlm_type2</a> message<p> 673<dl compact><dt><b>Parameters:</b></dt><dd> 674 <table border="0" cellspacing="2" cellpadding="0"> 675 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>message to be freed </td></tr> 676 </table> 677</dl> 678 679</div> 680</div><p> 681<a class="anchor" name="gc4e6d01e5247b8540d41ccbbf1031319"></a><!-- doxytag: member="ntlm.c::heim_ntlm_free_type3" ref="gc4e6d01e5247b8540d41ccbbf1031319" args="(struct ntlm_type3 *data)" --> 682<div class="memitem"> 683<div class="memproto"> 684 <table class="memname"> 685 <tr> 686 <td class="memname">void heim_ntlm_free_type3 </td> 687 <td>(</td> 688 <td class="paramtype">struct <a class="el" href="structntlm__type3.html">ntlm_type3</a> * </td> 689 <td class="paramname"> <em>data</em> </td> 690 <td> ) </td> 691 <td></td> 692 </tr> 693 </table> 694</div> 695<div class="memdoc"> 696 697<p> 698Frees the <a class="el" href="structntlm__type3.html">ntlm_type3</a> message<p> 699<dl compact><dt><b>Parameters:</b></dt><dd> 700 <table border="0" cellspacing="2" cellpadding="0"> 701 <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>message to be freed </td></tr> 702 </table> 703</dl> 704 705</div> 706</div><p> 707<a class="anchor" name="g6ef0049af05a83d73b7a3d962e679c2a"></a><!-- doxytag: member="ntlm.c::heim_ntlm_keyex_unwrap" ref="g6ef0049af05a83d73b7a3d962e679c2a" args="(struct ntlm_buf *baseKey, struct ntlm_buf *encryptedSession, struct ntlm_buf *session)" --> 708<div class="memitem"> 709<div class="memproto"> 710 <table class="memname"> 711 <tr> 712 <td class="memname">int heim_ntlm_keyex_unwrap </td> 713 <td>(</td> 714 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 715 <td class="paramname"> <em>baseKey</em>, </td> 716 </tr> 717 <tr> 718 <td class="paramkey"></td> 719 <td></td> 720 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 721 <td class="paramname"> <em>encryptedSession</em>, </td> 722 </tr> 723 <tr> 724 <td class="paramkey"></td> 725 <td></td> 726 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 727 <td class="paramname"> <em>session</em></td><td> </td> 728 </tr> 729 <tr> 730 <td></td> 731 <td>)</td> 732 <td></td><td></td><td></td> 733 </tr> 734 </table> 735</div> 736<div class="memdoc"> 737 738<p> 739Given a key and encrypted session, unwrap the session key<p> 740<dl compact><dt><b>Parameters:</b></dt><dd> 741 <table border="0" cellspacing="2" cellpadding="0"> 742 <tr><td valign="top"></td><td valign="top"><em>baseKey</em> </td><td>the sessionBaseKey </td></tr> 743 <tr><td valign="top"></td><td valign="top"><em>encryptedSession</em> </td><td>encrypted session, type3.session field. </td></tr> 744 <tr><td valign="top"></td><td valign="top"><em>session</em> </td><td>generated session nonce, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 745 </table> 746</dl> 747<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 748 749</div> 750</div><p> 751<a class="anchor" name="g254ee0a4d5a2594833e36697ad575d7e"></a><!-- doxytag: member="ntlm.c::heim_ntlm_nt_key" ref="g254ee0a4d5a2594833e36697ad575d7e" args="(const char *password, struct ntlm_buf *key)" --> 752<div class="memitem"> 753<div class="memproto"> 754 <table class="memname"> 755 <tr> 756 <td class="memname">int heim_ntlm_nt_key </td> 757 <td>(</td> 758 <td class="paramtype">const char * </td> 759 <td class="paramname"> <em>password</em>, </td> 760 </tr> 761 <tr> 762 <td class="paramkey"></td> 763 <td></td> 764 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 765 <td class="paramname"> <em>key</em></td><td> </td> 766 </tr> 767 <tr> 768 <td></td> 769 <td>)</td> 770 <td></td><td></td><td></td> 771 </tr> 772 </table> 773</div> 774<div class="memdoc"> 775 776<p> 777Calculate the NTLM key, the password is assumed to be in UTF8.<p> 778<dl compact><dt><b>Parameters:</b></dt><dd> 779 <table border="0" cellspacing="2" cellpadding="0"> 780 <tr><td valign="top"></td><td valign="top"><em>password</em> </td><td>password to calcute the key for. </td></tr> 781 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>calcuted key, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>.</td></tr> 782 </table> 783</dl> 784<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 785 786</div> 787</div><p> 788<a class="anchor" name="g4c4c32652527acead6848052615ae284"></a><!-- doxytag: member="ntlm.c::heim_ntlm_ntlmv2_key" ref="g4c4c32652527acead6848052615ae284" args="(const void *key, size_t len, const char *username, const char *target, unsigned char ntlmv2[16])" --> 789<div class="memitem"> 790<div class="memproto"> 791 <table class="memname"> 792 <tr> 793 <td class="memname">int heim_ntlm_ntlmv2_key </td> 794 <td>(</td> 795 <td class="paramtype">const void * </td> 796 <td class="paramname"> <em>key</em>, </td> 797 </tr> 798 <tr> 799 <td class="paramkey"></td> 800 <td></td> 801 <td class="paramtype">size_t </td> 802 <td class="paramname"> <em>len</em>, </td> 803 </tr> 804 <tr> 805 <td class="paramkey"></td> 806 <td></td> 807 <td class="paramtype">const char * </td> 808 <td class="paramname"> <em>username</em>, </td> 809 </tr> 810 <tr> 811 <td class="paramkey"></td> 812 <td></td> 813 <td class="paramtype">const char * </td> 814 <td class="paramname"> <em>target</em>, </td> 815 </tr> 816 <tr> 817 <td class="paramkey"></td> 818 <td></td> 819 <td class="paramtype">unsigned char </td> 820 <td class="paramname"> <em>ntlmv2</em>[16]</td><td> </td> 821 </tr> 822 <tr> 823 <td></td> 824 <td>)</td> 825 <td></td><td></td><td></td> 826 </tr> 827 </table> 828</div> 829<div class="memdoc"> 830 831<p> 832Generates an NTLMv2 session key.<p> 833<dl compact><dt><b>Parameters:</b></dt><dd> 834 <table border="0" cellspacing="2" cellpadding="0"> 835 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the ntlm key </td></tr> 836 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 837 <tr><td valign="top"></td><td valign="top"><em>username</em> </td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr> 838 <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>the name of the target, assumed to be in UTF8. </td></tr> 839 <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em> </td><td>the ntlmv2 session key</td></tr> 840 </table> 841</dl> 842<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, or an error code on failure. </dd></dl> 843 844</div> 845</div><p> 846<a class="anchor" name="g3b3d6a5187cab6bfe656afa7a8273ca6"></a><!-- doxytag: member="ntlm.c::heim_ntlm_verify_ntlm2" ref="g3b3d6a5187cab6bfe656afa7a8273ca6" args="(const void *key, size_t len, const char *username, const char *target, time_t now, const unsigned char serverchallenge[8], const struct ntlm_buf *answer, struct ntlm_buf *infotarget, unsigned char ntlmv2[16])" --> 847<div class="memitem"> 848<div class="memproto"> 849 <table class="memname"> 850 <tr> 851 <td class="memname">int heim_ntlm_verify_ntlm2 </td> 852 <td>(</td> 853 <td class="paramtype">const void * </td> 854 <td class="paramname"> <em>key</em>, </td> 855 </tr> 856 <tr> 857 <td class="paramkey"></td> 858 <td></td> 859 <td class="paramtype">size_t </td> 860 <td class="paramname"> <em>len</em>, </td> 861 </tr> 862 <tr> 863 <td class="paramkey"></td> 864 <td></td> 865 <td class="paramtype">const char * </td> 866 <td class="paramname"> <em>username</em>, </td> 867 </tr> 868 <tr> 869 <td class="paramkey"></td> 870 <td></td> 871 <td class="paramtype">const char * </td> 872 <td class="paramname"> <em>target</em>, </td> 873 </tr> 874 <tr> 875 <td class="paramkey"></td> 876 <td></td> 877 <td class="paramtype">time_t </td> 878 <td class="paramname"> <em>now</em>, </td> 879 </tr> 880 <tr> 881 <td class="paramkey"></td> 882 <td></td> 883 <td class="paramtype">const unsigned char </td> 884 <td class="paramname"> <em>serverchallenge</em>[8], </td> 885 </tr> 886 <tr> 887 <td class="paramkey"></td> 888 <td></td> 889 <td class="paramtype">const struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 890 <td class="paramname"> <em>answer</em>, </td> 891 </tr> 892 <tr> 893 <td class="paramkey"></td> 894 <td></td> 895 <td class="paramtype">struct <a class="el" href="structntlm__buf.html">ntlm_buf</a> * </td> 896 <td class="paramname"> <em>infotarget</em>, </td> 897 </tr> 898 <tr> 899 <td class="paramkey"></td> 900 <td></td> 901 <td class="paramtype">unsigned char </td> 902 <td class="paramname"> <em>ntlmv2</em>[16]</td><td> </td> 903 </tr> 904 <tr> 905 <td></td> 906 <td>)</td> 907 <td></td><td></td><td></td> 908 </tr> 909 </table> 910</div> 911<div class="memdoc"> 912 913<p> 914Verify NTLMv2 response.<p> 915<dl compact><dt><b>Parameters:</b></dt><dd> 916 <table border="0" cellspacing="2" cellpadding="0"> 917 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the ntlm key </td></tr> 918 <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of key </td></tr> 919 <tr><td valign="top"></td><td valign="top"><em>username</em> </td><td>name of the user, as sent in the message, assumed to be in UTF8. </td></tr> 920 <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>the name of the target, assumed to be in UTF8. </td></tr> 921 <tr><td valign="top"></td><td valign="top"><em>now</em> </td><td>the time now (0 if the library should pick it up itself) </td></tr> 922 <tr><td valign="top"></td><td valign="top"><em>serverchallenge</em> </td><td>challenge as sent by the server in the type2 message. </td></tr> 923 <tr><td valign="top"></td><td valign="top"><em>answer</em> </td><td>ntlm response answer, should be freed with <a class="el" href="group__ntlm__core.html#g5f6c313a3a7258cda5f09bb44f8d1776">heim_ntlm_free_buf()</a>. </td></tr> 924 <tr><td valign="top"></td><td valign="top"><em>infotarget</em> </td><td>infotarget as sent by the server in the type2 message. </td></tr> 925 <tr><td valign="top"></td><td valign="top"><em>ntlmv2</em> </td><td>calculated session key</td></tr> 926 </table> 927</dl> 928<dl class="return" compact><dt><b>Returns:</b></dt><dd>In case of success 0 is return, an errors, a errno in what went wrong. </dd></dl> 929 930</div> 931</div><p> 932</div> 933<hr size="1"><address style="text-align: right;"><small> 934Generated on Wed Jan 11 14:07:50 2012 for Heimdalntlmlibrary by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address> 935</body> 936</html> 937