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&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 </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"> </td></tr> 34<tr class="memitem:ga704ec8c5dba05ef57186d242ff165565"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 36<tr class="memitem:ga2881747fad2ac2979a28d3bd050b0fa8"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 38<tr class="memitem:gaf1d4de2faec8b1c1070a55fd2e6e630f"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 40<tr class="memitem:ga76fa6caf3f539e24008e31613f5eb663"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 42<tr class="memitem:ga0107727234287ac61a8801b0faff9dff"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 44<tr class="memitem:ga8fde84c86f1c7c9f730f7fb4acedcb43"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 46<tr class="memitem:ga2860c6f6d497255eb433adc8cacc49dd"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 48<tr class="memitem:gac4e6d01e5247b8540d41ccbbf1031319"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 50<tr class="memitem:gade200095bfa40a73cfd4154010cc6e76"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 52<tr class="memitem:ga254ee0a4d5a2594833e36697ad575d7e"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 54<tr class="memitem:gae3b634802ef94233a175291abd2ea14d"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 56<tr class="memitem:gad09935f9ccecb9fb2917d68fb82ec3d6"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 58<tr class="memitem:gad189a009fcac6cba44678b6a0aef81e0"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 60<tr class="memitem:ga6ef0049af05a83d73b7a3d962e679c2a"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 62<tr class="memitem:gabf3cf5f463992559d9ad4650077c83f3"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 64<tr class="memitem:ga9bc09732da698d0f2d8c9d41e60d764d"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 66<tr class="memitem:gaa8f07fb71a0d5f095cde3fb9fb40d10c"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 68<tr class="memitem:ga3b3d6a5187cab6bfe656afa7a8273ca6"><td class="memItemLeft" align="right" valign="top">int </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"> </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">◆ </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 * </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 </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> * </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> * </td> 102 <td class="paramname"><em>master</em> </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">◆ </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 * </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 </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> * </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> * </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> * </td> 159 <td class="paramname"><em>master</em> </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">◆ </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 * </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 </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 * </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 * </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 </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 </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> * </td> 229 <td class="paramname"><em>answer</em> </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">◆ </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 * </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 </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 </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> * </td> 283 <td class="paramname"><em>answer</em> </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">◆ </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 * </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 </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 * </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 * </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 </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> * </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 </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> * </td> 360 <td class="paramname"><em>answer</em> </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">◆ </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> * </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 </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 * </td> 411 <td class="paramname"><em>ti</em> </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">◆ </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 * </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 </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> * </td> 457 <td class="paramname"><em>data</em> </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">◆ </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> * </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> * </td> 497 <td class="paramname"><em>data</em> </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">◆ </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> * </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> * </td> 536 <td class="paramname"><em>data</em> </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">◆ </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> * </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> * </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 * </td> 581 <td class="paramname"><em>mic_offset</em> </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">◆ </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> * </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">◆ </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 * </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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">◆ </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> * </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> * </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> * </td> 762 <td class="paramname"><em>session</em> </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">◆ </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 * </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> * </td> 800 <td class="paramname"><em>key</em> </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">◆ </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 * </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 </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 * </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 * </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 </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 </td> 863 <td class="paramname"><em>ntlmv2</em>[16] </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">◆ </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 * </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 </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 * </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 * </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 </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 </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> * </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> * </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 </td> 946 <td class="paramname"><em>ntlmv2</em>[16] </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 <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