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&nbsp;Page</span></a></li>
16      <li><a href="modules.html"><span>Modules</span></a></li>
17      <li><a href="annotated.html"><span>Data&nbsp;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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
93          <td class="paramname"> <em>master</em></td><td>&nbsp;</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>&nbsp;</td><td>the ntlm v1 key </td></tr>
109    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
110    <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</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>&nbsp;</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 *&nbsp;</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&nbsp;</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> *&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
150          <td class="paramname"> <em>master</em></td><td>&nbsp;</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>&nbsp;</td><td>the NTLMv2 key </td></tr>
166    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
167    <tr><td valign="top"></td><td valign="top"><em>blob</em>&nbsp;</td><td>the NTLMv2 "blob" </td></tr>
168    <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</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>&nbsp;</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 *&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</td>
220          <td class="paramname"> <em>answer</em></td><td>&nbsp;</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>&nbsp;</td><td>the ntlm key </td></tr>
236    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
237    <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>calculated session key </td></tr>
241    <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</td>
274          <td class="paramname"> <em>answer</em></td><td>&nbsp;</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>&nbsp;</td><td>the ntlm v1 key </td></tr>
290    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
291    <tr><td valign="top"></td><td valign="top"><em>challenge</em>&nbsp;</td><td>sent by the server </td></tr>
292    <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</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 *&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</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&nbsp;</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> *&nbsp;</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&nbsp;</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> *&nbsp;</td>
349          <td class="paramname"> <em>answer</em></td><td>&nbsp;</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>&nbsp;</td><td>the ntlm key </td></tr>
365    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
366    <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>calculated session key </td></tr>
371    <tr><td valign="top"></td><td valign="top"><em>answer</em>&nbsp;</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> *&nbsp;</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&nbsp;</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 *&nbsp;</td>
398          <td class="paramname"> <em>ti</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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 *&nbsp;</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&nbsp;</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> *&nbsp;</td>
442          <td class="paramname"> <em>data</em></td><td>&nbsp;</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>&nbsp;</td><td>the ntlm_targetinfo message to encode. </td></tr>
458    <tr><td valign="top"></td><td valign="top"><em>ucs2</em>&nbsp;</td><td>ignored </td></tr>
459    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
480          <td class="paramname"> <em>data</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
517          <td class="paramname"> <em>data</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
554          <td class="paramname"> <em>data</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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> *&nbsp;</td>
585          <td class="paramname"> <em>p</em>          </td>
586          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
611          <td class="paramname"> <em>ti</em>          </td>
612          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</td>
637          <td class="paramname"> <em>data</em>          </td>
638          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</td>
663          <td class="paramname"> <em>data</em>          </td>
664          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</td>
689          <td class="paramname"> <em>data</em>          </td>
690          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
727          <td class="paramname"> <em>session</em></td><td>&nbsp;</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>&nbsp;</td><td>the sessionBaseKey </td></tr>
743    <tr><td valign="top"></td><td valign="top"><em>encryptedSession</em>&nbsp;</td><td>encrypted session, type3.session field. </td></tr>
744    <tr><td valign="top"></td><td valign="top"><em>session</em>&nbsp;</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 *&nbsp;</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> *&nbsp;</td>
765          <td class="paramname"> <em>key</em></td><td>&nbsp;</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>&nbsp;</td><td>password to calcute the key for. </td></tr>
781    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</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 *&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</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&nbsp;</td>
820          <td class="paramname"> <em>ntlmv2</em>[16]</td><td>&nbsp;</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>&nbsp;</td><td>the ntlm key </td></tr>
836    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
837    <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</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>&nbsp;</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>&nbsp;</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 *&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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> *&nbsp;</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&nbsp;</td>
902          <td class="paramname"> <em>ntlmv2</em>[16]</td><td>&nbsp;</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>&nbsp;</td><td>the ntlm key </td></tr>
918    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of key </td></tr>
919    <tr><td valign="top"></td><td valign="top"><em>username</em>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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&nbsp;<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