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