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">
8 <a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
10 <!-- end of header marker -->
11 <!-- Generated by Doxygen 1.5.6 -->
12 <div class="navigation" id="top">
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>
22 <div class="contents">
23 <h1>Heimdal NTLM library</h1><table border="0" cellpadding="0" cellspacing="0">
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
65 <hr><a name="_details"></a><h2>Detailed Description</h2>
66 The 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)" -->
69 <div class="memproto">
70 <table class="memname">
72 <td class="memname">int heim_ntlm_build_ntlm1_master </td>
74 <td class="paramtype">void * </td>
75 <td class="paramname"> <em>key</em>, </td>
78 <td class="paramkey"></td>
80 <td class="paramtype">size_t </td>
81 <td class="paramname"> <em>len</em>, </td>
84 <td class="paramkey"></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>
90 <td class="paramkey"></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>
98 <td></td><td></td><td></td>
105 Generates 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>
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>
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">
123 <td class="memname">int heim_ntlm_build_ntlm2_master </td>
125 <td class="paramtype">void * </td>
126 <td class="paramname"> <em>key</em>, </td>
129 <td class="paramkey"></td>
131 <td class="paramtype">size_t </td>
132 <td class="paramname"> <em>len</em>, </td>
135 <td class="paramkey"></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>
141 <td class="paramkey"></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>
147 <td class="paramkey"></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>
155 <td></td><td></td><td></td>
162 Generates 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>
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>
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">
181 <td class="memname">int heim_ntlm_calculate_lm2 </td>
183 <td class="paramtype">const void * </td>
184 <td class="paramname"> <em>key</em>, </td>
187 <td class="paramkey"></td>
189 <td class="paramtype">size_t </td>
190 <td class="paramname"> <em>len</em>, </td>
193 <td class="paramkey"></td>
195 <td class="paramtype">const char * </td>
196 <td class="paramname"> <em>username</em>, </td>
199 <td class="paramkey"></td>
201 <td class="paramtype">const char * </td>
202 <td class="paramname"> <em>target</em>, </td>
205 <td class="paramkey"></td>
207 <td class="paramtype">const unsigned char </td>
208 <td class="paramname"> <em>serverchallenge</em>[8], </td>
211 <td class="paramkey"></td>
213 <td class="paramtype">unsigned char </td>
214 <td class="paramname"> <em>ntlmv2</em>[16], </td>
217 <td class="paramkey"></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>
225 <td></td><td></td><td></td>
232 Calculate 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>
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>
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">
253 <td class="memname">int heim_ntlm_calculate_ntlm1 </td>
255 <td class="paramtype">void * </td>
256 <td class="paramname"> <em>key</em>, </td>
259 <td class="paramkey"></td>
261 <td class="paramtype">size_t </td>
262 <td class="paramname"> <em>len</em>, </td>
265 <td class="paramkey"></td>
267 <td class="paramtype">unsigned char </td>
268 <td class="paramname"> <em>challenge</em>[8], </td>
271 <td class="paramkey"></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>
279 <td></td><td></td><td></td>
286 Calculate 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>
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>
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">
304 <td class="memname">int heim_ntlm_calculate_ntlm2 </td>
306 <td class="paramtype">const void * </td>
307 <td class="paramname"> <em>key</em>, </td>
310 <td class="paramkey"></td>
312 <td class="paramtype">size_t </td>
313 <td class="paramname"> <em>len</em>, </td>
316 <td class="paramkey"></td>
318 <td class="paramtype">const char * </td>
319 <td class="paramname"> <em>username</em>, </td>
322 <td class="paramkey"></td>
324 <td class="paramtype">const char * </td>
325 <td class="paramname"> <em>target</em>, </td>
328 <td class="paramkey"></td>
330 <td class="paramtype">const unsigned char </td>
331 <td class="paramname"> <em>serverchallenge</em>[8], </td>
334 <td class="paramkey"></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>
340 <td class="paramkey"></td>
342 <td class="paramtype">unsigned char </td>
343 <td class="paramname"> <em>ntlmv2</em>[16], </td>
346 <td class="paramkey"></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>
354 <td></td><td></td><td></td>
361 Calculate 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>
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>
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">
383 <td class="memname">int heim_ntlm_decode_targetinfo </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>
389 <td class="paramkey"></td>
391 <td class="paramtype">int </td>
392 <td class="paramname"> <em>ucs2</em>, </td>
395 <td class="paramkey"></td>
397 <td class="paramtype">struct ntlm_targetinfo * </td>
398 <td class="paramname"> <em>ti</em></td><td> </td>
403 <td></td><td></td><td></td>
410 Decodes 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>
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>
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">
427 <td class="memname">int heim_ntlm_encode_targetinfo </td>
429 <td class="paramtype">const struct ntlm_targetinfo * </td>
430 <td class="paramname"> <em>ti</em>, </td>
433 <td class="paramkey"></td>
435 <td class="paramtype">int </td>
436 <td class="paramname"> <em>ucs2</em>, </td>
439 <td class="paramkey"></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>
447 <td></td><td></td><td></td>
454 Encodes 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>
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>
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">
471 <td class="memname">int heim_ntlm_encode_type1 </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>
477 <td class="paramkey"></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>
485 <td></td><td></td><td></td>
492 Encodes 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>
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>
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">
508 <td class="memname">int heim_ntlm_encode_type2 </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>
514 <td class="paramkey"></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>
522 <td></td><td></td><td></td>
529 Encodes 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>
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>
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">
545 <td class="memname">int heim_ntlm_encode_type3 </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>
551 <td class="paramkey"></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>
559 <td></td><td></td><td></td>
566 Encodes 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>
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>
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">
582 <td class="memname">void heim_ntlm_free_buf </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>
594 heim_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>
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">
608 <td class="memname">void heim_ntlm_free_targetinfo </td>
610 <td class="paramtype">struct ntlm_targetinfo * </td>
611 <td class="paramname"> <em>ti</em> </td>
612 <td> ) </td>
620 Frees 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>
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">
634 <td class="memname">void heim_ntlm_free_type1 </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>
646 Frees 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>
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">
660 <td class="memname">void heim_ntlm_free_type2 </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>
672 Frees 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>
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">
686 <td class="memname">void heim_ntlm_free_type3 </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>
698 Frees 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>
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">
712 <td class="memname">int heim_ntlm_keyex_unwrap </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>
718 <td class="paramkey"></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>
724 <td class="paramkey"></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>
732 <td></td><td></td><td></td>
739 Given 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>
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>
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">
756 <td class="memname">int heim_ntlm_nt_key </td>
758 <td class="paramtype">const char * </td>
759 <td class="paramname"> <em>password</em>, </td>
762 <td class="paramkey"></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>
770 <td></td><td></td><td></td>
777 Calculate 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>
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>
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">
793 <td class="memname">int heim_ntlm_ntlmv2_key </td>
795 <td class="paramtype">const void * </td>
796 <td class="paramname"> <em>key</em>, </td>
799 <td class="paramkey"></td>
801 <td class="paramtype">size_t </td>
802 <td class="paramname"> <em>len</em>, </td>
805 <td class="paramkey"></td>
807 <td class="paramtype">const char * </td>
808 <td class="paramname"> <em>username</em>, </td>
811 <td class="paramkey"></td>
813 <td class="paramtype">const char * </td>
814 <td class="paramname"> <em>target</em>, </td>
817 <td class="paramkey"></td>
819 <td class="paramtype">unsigned char </td>
820 <td class="paramname"> <em>ntlmv2</em>[16]</td><td> </td>
825 <td></td><td></td><td></td>
832 Generates 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>
842 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, or an error code on failure. </dd></dl>
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">
851 <td class="memname">int heim_ntlm_verify_ntlm2 </td>
853 <td class="paramtype">const void * </td>
854 <td class="paramname"> <em>key</em>, </td>
857 <td class="paramkey"></td>
859 <td class="paramtype">size_t </td>
860 <td class="paramname"> <em>len</em>, </td>
863 <td class="paramkey"></td>
865 <td class="paramtype">const char * </td>
866 <td class="paramname"> <em>username</em>, </td>
869 <td class="paramkey"></td>
871 <td class="paramtype">const char * </td>
872 <td class="paramname"> <em>target</em>, </td>
875 <td class="paramkey"></td>
877 <td class="paramtype">time_t </td>
878 <td class="paramname"> <em>now</em>, </td>
881 <td class="paramkey"></td>
883 <td class="paramtype">const unsigned char </td>
884 <td class="paramname"> <em>serverchallenge</em>[8], </td>
887 <td class="paramkey"></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>
893 <td class="paramkey"></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>
899 <td class="paramkey"></td>
901 <td class="paramtype">unsigned char </td>
902 <td class="paramname"> <em>ntlmv2</em>[16]</td><td> </td>
907 <td></td><td></td><td></td>
914 Verify 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>
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>
933 <hr size="1"><address style="text-align: right;"><small>
934 Generated 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>