2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
4
<refentry id="gnutls-extra">
6
<refentrytitle role="top_of_page" id="gnutls-extra.top_of_page">extra</refentrytitle>
7
<manvolnum>3</manvolnum>
13
<refname>extra</refname>
14
<refpurpose></refpurpose>
17
<refsynopsisdiv id="gnutls-extra.synopsis" role="synopsis">
18
<title role="synopsis.title">Synopsis</title>
20
<synopsis>#define <link linkend="GNUTLS-EXTRA-VERSION:CAPS">GNUTLS_EXTRA_VERSION</link>
21
enum <link linkend="gnutls-ia-apptype-t">gnutls_ia_apptype_t</link>;
22
<link linkend="int"><returnvalue>int</returnvalue></link> (<link linkend="gnutls-ia-avp-func">*gnutls_ia_avp_func</link>) (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
23
<parameter><link linkend="void"><type>void</type></link> *ptr</parameter>,
24
<parameter>const <link linkend="char"><type>char</type></link> *last</parameter>,
25
<parameter><link linkend="size-t"><type>size_t</type></link> lastlen</parameter>,
26
<parameter><link linkend="char"><type>char</type></link> **next</parameter>,
27
<parameter><link linkend="size-t"><type>size_t</type></link> *nextlen</parameter>);
28
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-free-client-credentials">gnutls_ia_free_client_credentials</link> (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> sc</parameter>);
29
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-allocate-client-credentials">gnutls_ia_allocate_client_credentials</link>
30
(<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> *sc</parameter>);
31
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-free-server-credentials">gnutls_ia_free_server_credentials</link> (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> sc</parameter>);
32
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-allocate-server-credentials">gnutls_ia_allocate_server_credentials</link>
33
(<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> *sc</parameter>);
34
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-set-client-avp-function">gnutls_ia_set_client_avp_function</link> (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> cred</parameter>,
35
<parameter><link linkend="gnutls-ia-avp-func"><type>gnutls_ia_avp_func</type></link> avp_func</parameter>);
36
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-set-client-avp-ptr">gnutls_ia_set_client_avp_ptr</link> (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> cred</parameter>,
37
<parameter><link linkend="void"><type>void</type></link> *ptr</parameter>);
38
<link linkend="void"><returnvalue>void</returnvalue></link> * <link linkend="gnutls-ia-get-client-avp-ptr">gnutls_ia_get_client_avp_ptr</link> (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> cred</parameter>);
39
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-set-server-avp-function">gnutls_ia_set_server_avp_function</link> (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> cred</parameter>,
40
<parameter><link linkend="gnutls-ia-avp-func"><type>gnutls_ia_avp_func</type></link> avp_func</parameter>);
41
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-set-server-avp-ptr">gnutls_ia_set_server_avp_ptr</link> (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> cred</parameter>,
42
<parameter><link linkend="void"><type>void</type></link> *ptr</parameter>);
43
<link linkend="void"><returnvalue>void</returnvalue></link> * <link linkend="gnutls-ia-get-server-avp-ptr">gnutls_ia_get_server_avp_ptr</link> (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> cred</parameter>);
44
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-handshake-p">gnutls_ia_handshake_p</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>);
45
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-handshake">gnutls_ia_handshake</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>);
46
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-permute-inner-secret">gnutls_ia_permute_inner_secret</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
47
<parameter><link linkend="size-t"><type>size_t</type></link> session_keys_size</parameter>,
48
<parameter>const <link linkend="char"><type>char</type></link> *session_keys</parameter>);
49
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-endphase-send">gnutls_ia_endphase_send</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
50
<parameter><link linkend="int"><type>int</type></link> final_p</parameter>);
51
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-verify-endphase">gnutls_ia_verify_endphase</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
52
<parameter>const <link linkend="char"><type>char</type></link> *checksum</parameter>);
53
<link linkend="ssize-t"><returnvalue>ssize_t</returnvalue></link> <link linkend="gnutls-ia-send">gnutls_ia_send</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
54
<parameter>const <link linkend="char"><type>char</type></link> *data</parameter>,
55
<parameter><link linkend="size-t"><type>size_t</type></link> sizeofdata</parameter>);
56
<link linkend="ssize-t"><returnvalue>ssize_t</returnvalue></link> <link linkend="gnutls-ia-recv">gnutls_ia_recv</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
57
<parameter><link linkend="char"><type>char</type></link> *data</parameter>,
58
<parameter><link linkend="size-t"><type>size_t</type></link> sizeofdata</parameter>);
59
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-ia-generate-challenge">gnutls_ia_generate_challenge</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
60
<parameter><link linkend="size-t"><type>size_t</type></link> buffer_size</parameter>,
61
<parameter><link linkend="char"><type>char</type></link> *buffer</parameter>);
62
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-extract-inner-secret">gnutls_ia_extract_inner_secret</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
63
<parameter><link linkend="char"><type>char</type></link> *buffer</parameter>);
64
<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="gnutls-ia-enable">gnutls_ia_enable</link> (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
65
<parameter><link linkend="int"><type>int</type></link> allow_skip_on_resume</parameter>);
66
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-global-init-extra">gnutls_global_init_extra</link> (<parameter><type>void</type></parameter>);
67
<link linkend="int"><returnvalue>int</returnvalue></link> <link linkend="gnutls-register-md5-handler">gnutls_register_md5_handler</link> (<parameter><type>void</type></parameter>);
68
const <link linkend="char"><returnvalue>char</returnvalue></link> * <link linkend="gnutls-extra-check-version">gnutls_extra_check_version</link> (<parameter>const <link linkend="char"><type>char</type></link> *req_version</parameter>);
72
<refsect1 id="gnutls-extra.description" role="desc">
73
<title role="desc.title">Description</title>
77
<refsect1 id="gnutls-extra.details" role="details">
78
<title role="details.title">Details</title>
79
<refsect2 id="GNUTLS-EXTRA-VERSION:CAPS" role="macro">
80
<title>GNUTLS_EXTRA_VERSION</title>
81
<indexterm zone="GNUTLS-EXTRA-VERSION:CAPS"><primary>GNUTLS_EXTRA_VERSION</primary></indexterm>
82
<programlisting>#define GNUTLS_EXTRA_VERSION GNUTLS_VERSION
86
<refsect2 id="gnutls-ia-apptype-t" role="enum">
87
<title>enum gnutls_ia_apptype_t</title>
88
<indexterm zone="gnutls-ia-apptype-t"><primary>gnutls_ia_apptype_t</primary></indexterm>
89
<programlisting> typedef enum
91
GNUTLS_IA_APPLICATION_PAYLOAD = 0,
92
GNUTLS_IA_INTERMEDIATE_PHASE_FINISHED = 1,
93
GNUTLS_IA_FINAL_PHASE_FINISHED = 2
94
} gnutls_ia_apptype_t;
98
<refsect2 id="gnutls-ia-avp-func" role="function">
99
<title>gnutls_ia_avp_func ()</title>
100
<indexterm zone="gnutls-ia-avp-func"><primary>gnutls_ia_avp_func</primary></indexterm>
101
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> (*gnutls_ia_avp_func) (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
102
<parameter><link linkend="void"><type>void</type></link> *ptr</parameter>,
103
<parameter>const <link linkend="char"><type>char</type></link> *last</parameter>,
104
<parameter><link linkend="size-t"><type>size_t</type></link> lastlen</parameter>,
105
<parameter><link linkend="char"><type>char</type></link> **next</parameter>,
106
<parameter><link linkend="size-t"><type>size_t</type></link> *nextlen</parameter>);</programlisting>
108
</para><variablelist role="params">
109
<varlistentry><term><parameter>session</parameter> :</term>
111
</simpara></listitem></varlistentry>
112
<varlistentry><term><parameter>ptr</parameter> :</term>
114
</simpara></listitem></varlistentry>
115
<varlistentry><term><parameter>last</parameter> :</term>
117
</simpara></listitem></varlistentry>
118
<varlistentry><term><parameter>lastlen</parameter> :</term>
120
</simpara></listitem></varlistentry>
121
<varlistentry><term><parameter>next</parameter> :</term>
123
</simpara></listitem></varlistentry>
124
<varlistentry><term><parameter>nextlen</parameter> :</term>
126
</simpara></listitem></varlistentry>
127
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
128
</simpara></listitem></varlistentry>
129
</variablelist></refsect2>
130
<refsect2 id="gnutls-ia-free-client-credentials" role="function">
131
<title>gnutls_ia_free_client_credentials ()</title>
132
<indexterm zone="gnutls-ia-free-client-credentials"><primary>gnutls_ia_free_client_credentials</primary></indexterm>
133
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_free_client_credentials (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> sc</parameter>);</programlisting>
135
</para><variablelist role="params">
136
<varlistentry><term><parameter>sc</parameter> :</term>
138
</simpara></listitem></varlistentry>
139
</variablelist></refsect2>
140
<refsect2 id="gnutls-ia-allocate-client-credentials" role="function">
141
<title>gnutls_ia_allocate_client_credentials ()</title>
142
<indexterm zone="gnutls-ia-allocate-client-credentials"><primary>gnutls_ia_allocate_client_credentials</primary></indexterm>
143
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_allocate_client_credentials
144
(<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> *sc</parameter>);</programlisting>
146
</para><variablelist role="params">
147
<varlistentry><term><parameter>sc</parameter> :</term>
149
</simpara></listitem></varlistentry>
150
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
151
</simpara></listitem></varlistentry>
152
</variablelist></refsect2>
153
<refsect2 id="gnutls-ia-free-server-credentials" role="function">
154
<title>gnutls_ia_free_server_credentials ()</title>
155
<indexterm zone="gnutls-ia-free-server-credentials"><primary>gnutls_ia_free_server_credentials</primary></indexterm>
156
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_free_server_credentials (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> sc</parameter>);</programlisting>
158
</para><variablelist role="params">
159
<varlistentry><term><parameter>sc</parameter> :</term>
161
</simpara></listitem></varlistentry>
162
</variablelist></refsect2>
163
<refsect2 id="gnutls-ia-allocate-server-credentials" role="function">
164
<title>gnutls_ia_allocate_server_credentials ()</title>
165
<indexterm zone="gnutls-ia-allocate-server-credentials"><primary>gnutls_ia_allocate_server_credentials</primary></indexterm>
166
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_allocate_server_credentials
167
(<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> *sc</parameter>);</programlisting>
169
</para><variablelist role="params">
170
<varlistentry><term><parameter>sc</parameter> :</term>
172
</simpara></listitem></varlistentry>
173
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
174
</simpara></listitem></varlistentry>
175
</variablelist></refsect2>
176
<refsect2 id="gnutls-ia-set-client-avp-function" role="function">
177
<title>gnutls_ia_set_client_avp_function ()</title>
178
<indexterm zone="gnutls-ia-set-client-avp-function"><primary>gnutls_ia_set_client_avp_function</primary></indexterm>
179
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_set_client_avp_function (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> cred</parameter>,
180
<parameter><link linkend="gnutls-ia-avp-func"><type>gnutls_ia_avp_func</type></link> avp_func</parameter>);</programlisting>
182
</para><variablelist role="params">
183
<varlistentry><term><parameter>cred</parameter> :</term>
185
</simpara></listitem></varlistentry>
186
<varlistentry><term><parameter>avp_func</parameter> :</term>
188
</simpara></listitem></varlistentry>
189
</variablelist></refsect2>
190
<refsect2 id="gnutls-ia-set-client-avp-ptr" role="function">
191
<title>gnutls_ia_set_client_avp_ptr ()</title>
192
<indexterm zone="gnutls-ia-set-client-avp-ptr"><primary>gnutls_ia_set_client_avp_ptr</primary></indexterm>
193
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_set_client_avp_ptr (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> cred</parameter>,
194
<parameter><link linkend="void"><type>void</type></link> *ptr</parameter>);</programlisting>
196
</para><variablelist role="params">
197
<varlistentry><term><parameter>cred</parameter> :</term>
199
</simpara></listitem></varlistentry>
200
<varlistentry><term><parameter>ptr</parameter> :</term>
202
</simpara></listitem></varlistentry>
203
</variablelist></refsect2>
204
<refsect2 id="gnutls-ia-get-client-avp-ptr" role="function">
205
<title>gnutls_ia_get_client_avp_ptr ()</title>
206
<indexterm zone="gnutls-ia-get-client-avp-ptr"><primary>gnutls_ia_get_client_avp_ptr</primary></indexterm>
207
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> * gnutls_ia_get_client_avp_ptr (<parameter><link linkend="gnutls-ia-client-credentials-t"><type>gnutls_ia_client_credentials_t</type></link> cred</parameter>);</programlisting>
209
</para><variablelist role="params">
210
<varlistentry><term><parameter>cred</parameter> :</term>
212
</simpara></listitem></varlistentry>
213
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
214
</simpara></listitem></varlistentry>
215
</variablelist></refsect2>
216
<refsect2 id="gnutls-ia-set-server-avp-function" role="function">
217
<title>gnutls_ia_set_server_avp_function ()</title>
218
<indexterm zone="gnutls-ia-set-server-avp-function"><primary>gnutls_ia_set_server_avp_function</primary></indexterm>
219
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_set_server_avp_function (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> cred</parameter>,
220
<parameter><link linkend="gnutls-ia-avp-func"><type>gnutls_ia_avp_func</type></link> avp_func</parameter>);</programlisting>
222
</para><variablelist role="params">
223
<varlistentry><term><parameter>cred</parameter> :</term>
225
</simpara></listitem></varlistentry>
226
<varlistentry><term><parameter>avp_func</parameter> :</term>
228
</simpara></listitem></varlistentry>
229
</variablelist></refsect2>
230
<refsect2 id="gnutls-ia-set-server-avp-ptr" role="function">
231
<title>gnutls_ia_set_server_avp_ptr ()</title>
232
<indexterm zone="gnutls-ia-set-server-avp-ptr"><primary>gnutls_ia_set_server_avp_ptr</primary></indexterm>
233
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_set_server_avp_ptr (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> cred</parameter>,
234
<parameter><link linkend="void"><type>void</type></link> *ptr</parameter>);</programlisting>
236
</para><variablelist role="params">
237
<varlistentry><term><parameter>cred</parameter> :</term>
239
</simpara></listitem></varlistentry>
240
<varlistentry><term><parameter>ptr</parameter> :</term>
242
</simpara></listitem></varlistentry>
243
</variablelist></refsect2>
244
<refsect2 id="gnutls-ia-get-server-avp-ptr" role="function">
245
<title>gnutls_ia_get_server_avp_ptr ()</title>
246
<indexterm zone="gnutls-ia-get-server-avp-ptr"><primary>gnutls_ia_get_server_avp_ptr</primary></indexterm>
247
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> * gnutls_ia_get_server_avp_ptr (<parameter><link linkend="gnutls-ia-server-credentials-t"><type>gnutls_ia_server_credentials_t</type></link> cred</parameter>);</programlisting>
249
</para><variablelist role="params">
250
<varlistentry><term><parameter>cred</parameter> :</term>
252
</simpara></listitem></varlistentry>
253
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
254
</simpara></listitem></varlistentry>
255
</variablelist></refsect2>
256
<refsect2 id="gnutls-ia-handshake-p" role="function">
257
<title>gnutls_ia_handshake_p ()</title>
258
<indexterm zone="gnutls-ia-handshake-p"><primary>gnutls_ia_handshake_p</primary></indexterm>
259
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_handshake_p (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>);</programlisting>
261
Predicate to be used after <link linkend="gnutls-handshake"><function>gnutls_handshake()</function></link> to decide whether to
262
invoke <link linkend="gnutls-ia-handshake"><function>gnutls_ia_handshake()</function></link>. Usable by both clients and servers.</para>
263
<variablelist role="params">
264
<varlistentry><term><parameter>session</parameter> :</term>
265
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
266
</simpara></listitem></varlistentry>
267
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> non-zero if TLS/IA handshake is expected, zero
269
</simpara></listitem></varlistentry>
270
</variablelist></refsect2>
271
<refsect2 id="gnutls-ia-handshake" role="function">
272
<title>gnutls_ia_handshake ()</title>
273
<indexterm zone="gnutls-ia-handshake"><primary>gnutls_ia_handshake</primary></indexterm>
274
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_handshake (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>);</programlisting>
276
Perform a TLS/IA handshake. This should be called after
277
<link linkend="gnutls-handshake"><function>gnutls_handshake()</function></link> iff <link linkend="gnutls-ia-handshake-p"><function>gnutls_ia_handshake_p()</function></link>.</para>
278
<variablelist role="params">
279
<varlistentry><term><parameter>session</parameter> :</term>
280
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
281
</simpara></listitem></varlistentry>
282
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> On success, <link linkend="GNUTLS-E-SUCCESS:CAPS"><literal>GNUTLS_E_SUCCESS</literal></link> (zero) is returned,
283
otherwise an error code is returned.
284
</simpara></listitem></varlistentry>
285
</variablelist></refsect2>
286
<refsect2 id="gnutls-ia-permute-inner-secret" role="function">
287
<title>gnutls_ia_permute_inner_secret ()</title>
288
<indexterm zone="gnutls-ia-permute-inner-secret"><primary>gnutls_ia_permute_inner_secret</primary></indexterm>
289
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_permute_inner_secret (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
290
<parameter><link linkend="size-t"><type>size_t</type></link> session_keys_size</parameter>,
291
<parameter>const <link linkend="char"><type>char</type></link> *session_keys</parameter>);</programlisting>
293
Permute the inner secret using the generated session keys.
296
This can be called in the TLS/IA AVP callback to mix any generated
297
session keys with the TLS/IA inner secret.</para>
298
<variablelist role="params">
299
<varlistentry><term><parameter>session</parameter> :</term>
300
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
301
</simpara></listitem></varlistentry>
302
<varlistentry><term><parameter>session_keys_size</parameter> :</term>
303
<listitem><simpara>Size of generated session keys (0 if none).
304
</simpara></listitem></varlistentry>
305
<varlistentry><term><parameter>session_keys</parameter> :</term>
306
<listitem><simpara>Generated session keys, used to permute inner secret
308
</simpara></listitem></varlistentry>
309
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> Return zero on success, or a negative error code.
310
</simpara></listitem></varlistentry>
311
</variablelist></refsect2>
312
<refsect2 id="gnutls-ia-endphase-send" role="function">
313
<title>gnutls_ia_endphase_send ()</title>
314
<indexterm zone="gnutls-ia-endphase-send"><primary>gnutls_ia_endphase_send</primary></indexterm>
315
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_endphase_send (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
316
<parameter><link linkend="int"><type>int</type></link> final_p</parameter>);</programlisting>
318
Send a TLS/IA end phase message.
321
In the client, this should only be used to acknowledge an end phase
322
message sent by the server.
325
In the server, this can be called instead of <link linkend="gnutls-ia-send"><function>gnutls_ia_send()</function></link> if
326
the server wishes to end an application phase.</para>
327
<variablelist role="params">
328
<varlistentry><term><parameter>session</parameter> :</term>
329
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
330
</simpara></listitem></varlistentry>
331
<varlistentry><term><parameter>final_p</parameter> :</term>
332
<listitem><simpara>Set iff this should signal the final phase.
333
</simpara></listitem></varlistentry>
334
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> Return 0 on success, or an error code.
335
</simpara></listitem></varlistentry>
336
</variablelist></refsect2>
337
<refsect2 id="gnutls-ia-verify-endphase" role="function">
338
<title>gnutls_ia_verify_endphase ()</title>
339
<indexterm zone="gnutls-ia-verify-endphase"><primary>gnutls_ia_verify_endphase</primary></indexterm>
340
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_verify_endphase (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
341
<parameter>const <link linkend="char"><type>char</type></link> *checksum</parameter>);</programlisting>
343
Verify TLS/IA end phase checksum data. If verification fails, the
344
<link linkend="GNUTLS-A-INNER-APPLICATION-VERIFICATION:CAPS"><literal>GNUTLS_A_INNER_APPLICATION_VERIFICATION</literal></link> alert is sent to the other
348
This function is called when <link linkend="gnutls-ia-recv"><function>gnutls_ia_recv()</function></link> return
349
<link linkend="GNUTLS-E-WARNING-IA-IPHF-RECEIVED:CAPS"><literal>GNUTLS_E_WARNING_IA_IPHF_RECEIVED</literal></link> or
350
<link linkend="GNUTLS-E-WARNING-IA-FPHF-RECEIVED:CAPS"><literal>GNUTLS_E_WARNING_IA_FPHF_RECEIVED</literal></link>.</para>
351
<variablelist role="params">
352
<varlistentry><term><parameter>session</parameter> :</term>
353
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
354
</simpara></listitem></varlistentry>
355
<varlistentry><term><parameter>checksum</parameter> :</term>
356
<listitem><simpara>12-byte checksum data, received from <link linkend="gnutls-ia-recv"><function>gnutls_ia_recv()</function></link>.
357
</simpara></listitem></varlistentry>
358
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> Return 0 on successful verification, or an error
359
code. If the checksum verification of the end phase message fails,
360
<link linkend="GNUTLS-E-IA-VERIFY-FAILED:CAPS"><literal>GNUTLS_E_IA_VERIFY_FAILED</literal></link> is returned.
361
</simpara></listitem></varlistentry>
362
</variablelist></refsect2>
363
<refsect2 id="gnutls-ia-send" role="function">
364
<title>gnutls_ia_send ()</title>
365
<indexterm zone="gnutls-ia-send"><primary>gnutls_ia_send</primary></indexterm>
366
<programlisting><link linkend="ssize-t"><returnvalue>ssize_t</returnvalue></link> gnutls_ia_send (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
367
<parameter>const <link linkend="char"><type>char</type></link> *data</parameter>,
368
<parameter><link linkend="size-t"><type>size_t</type></link> sizeofdata</parameter>);</programlisting>
370
</para><variablelist role="params">
371
<varlistentry><term><parameter>session</parameter> :</term>
373
</simpara></listitem></varlistentry>
374
<varlistentry><term><parameter>data</parameter> :</term>
376
</simpara></listitem></varlistentry>
377
<varlistentry><term><parameter>sizeofdata</parameter> :</term>
379
</simpara></listitem></varlistentry>
380
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
381
</simpara></listitem></varlistentry>
382
</variablelist></refsect2>
383
<refsect2 id="gnutls-ia-recv" role="function">
384
<title>gnutls_ia_recv ()</title>
385
<indexterm zone="gnutls-ia-recv"><primary>gnutls_ia_recv</primary></indexterm>
386
<programlisting><link linkend="ssize-t"><returnvalue>ssize_t</returnvalue></link> gnutls_ia_recv (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
387
<parameter><link linkend="char"><type>char</type></link> *data</parameter>,
388
<parameter><link linkend="size-t"><type>size_t</type></link> sizeofdata</parameter>);</programlisting>
390
</para><variablelist role="params">
391
<varlistentry><term><parameter>session</parameter> :</term>
393
</simpara></listitem></varlistentry>
394
<varlistentry><term><parameter>data</parameter> :</term>
396
</simpara></listitem></varlistentry>
397
<varlistentry><term><parameter>sizeofdata</parameter> :</term>
399
</simpara></listitem></varlistentry>
400
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
401
</simpara></listitem></varlistentry>
402
</variablelist></refsect2>
403
<refsect2 id="gnutls-ia-generate-challenge" role="function">
404
<title>gnutls_ia_generate_challenge ()</title>
405
<indexterm zone="gnutls-ia-generate-challenge"><primary>gnutls_ia_generate_challenge</primary></indexterm>
406
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_ia_generate_challenge (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
407
<parameter><link linkend="size-t"><type>size_t</type></link> buffer_size</parameter>,
408
<parameter><link linkend="char"><type>char</type></link> *buffer</parameter>);</programlisting>
410
Generate an application challenge that the client cannot control or
411
predict, based on the TLS/IA inner secret.</para>
412
<variablelist role="params">
413
<varlistentry><term><parameter>session</parameter> :</term>
414
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
415
</simpara></listitem></varlistentry>
416
<varlistentry><term><parameter>buffer_size</parameter> :</term>
417
<listitem><simpara>size of output buffer.
418
</simpara></listitem></varlistentry>
419
<varlistentry><term><parameter>buffer</parameter> :</term>
420
<listitem><simpara>pre-allocated buffer to contain <parameter>buffer_size</parameter> bytes of output.
421
</simpara></listitem></varlistentry>
422
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> Returns 0 on success, or an negative error code.
423
</simpara></listitem></varlistentry>
424
</variablelist></refsect2>
425
<refsect2 id="gnutls-ia-extract-inner-secret" role="function">
426
<title>gnutls_ia_extract_inner_secret ()</title>
427
<indexterm zone="gnutls-ia-extract-inner-secret"><primary>gnutls_ia_extract_inner_secret</primary></indexterm>
428
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_extract_inner_secret (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
429
<parameter><link linkend="char"><type>char</type></link> *buffer</parameter>);</programlisting>
431
Copy the 48 bytes large inner secret into the specified buffer
434
This function is typically used after the TLS/IA handshake has
435
concluded. The TLS/IA inner secret can be used as input to a PRF
436
to derive session keys. Do not use the inner secret directly as a
437
session key, because for a resumed session that does not include an
438
application phase, the inner secret will be identical to the inner
439
secret in the original session. It is important to include, for
440
example, the client and server randomness when deriving a sesssion
441
key from the inner secret.</para>
442
<variablelist role="params">
443
<varlistentry><term><parameter>session</parameter> :</term>
444
<listitem><simpara>is a <link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> structure.
445
</simpara></listitem></varlistentry>
446
<varlistentry><term><parameter>buffer</parameter> :</term>
447
<listitem><simpara>pre-allocated buffer to hold 48 bytes of inner secret.
448
</simpara></listitem></varlistentry>
449
</variablelist></refsect2>
450
<refsect2 id="gnutls-ia-enable" role="function">
451
<title>gnutls_ia_enable ()</title>
452
<indexterm zone="gnutls-ia-enable"><primary>gnutls_ia_enable</primary></indexterm>
453
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> gnutls_ia_enable (<parameter><link linkend="gnutls-session-t"><type>gnutls_session_t</type></link> session</parameter>,
454
<parameter><link linkend="int"><type>int</type></link> allow_skip_on_resume</parameter>);</programlisting>
456
</para><variablelist role="params">
457
<varlistentry><term><parameter>session</parameter> :</term>
459
</simpara></listitem></varlistentry>
460
<varlistentry><term><parameter>allow_skip_on_resume</parameter> :</term>
462
</simpara></listitem></varlistentry>
463
</variablelist></refsect2>
464
<refsect2 id="gnutls-global-init-extra" role="function">
465
<title>gnutls_global_init_extra ()</title>
466
<indexterm zone="gnutls-global-init-extra"><primary>gnutls_global_init_extra</primary></indexterm>
467
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_global_init_extra (<parameter><type>void</type></parameter>);</programlisting>
469
</para><variablelist role="params">
470
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
471
</simpara></listitem></varlistentry>
472
</variablelist></refsect2>
473
<refsect2 id="gnutls-register-md5-handler" role="function" condition="since:2.6.0">
474
<title>gnutls_register_md5_handler ()</title>
475
<indexterm zone="gnutls-register-md5-handler" role="2.6.0"><primary>gnutls_register_md5_handler</primary></indexterm>
476
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link> gnutls_register_md5_handler (<parameter><type>void</type></parameter>);</programlisting>
478
Register a non-libgcrypt based MD5 and HMAC-MD5 handler. This is
479
useful if you run Libgcrypt in FIPS-mode. Normally TLS requires
480
use of MD5, so without this you cannot use GnuTLS with libgcrypt in
482
<variablelist role="params">
483
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="GNUTLS-E-SUCCESS:CAPS"><literal>GNUTLS_E_SUCCESS</literal></link> on success, otherwise an error.
485
</simpara></listitem></varlistentry>
486
</variablelist><para role="since">Since 2.6.0</para></refsect2>
487
<refsect2 id="gnutls-extra-check-version" role="function">
488
<title>gnutls_extra_check_version ()</title>
489
<indexterm zone="gnutls-extra-check-version"><primary>gnutls_extra_check_version</primary></indexterm>
490
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> * gnutls_extra_check_version (<parameter>const <link linkend="char"><type>char</type></link> *req_version</parameter>);</programlisting>
492
</para><variablelist role="params">
493
<varlistentry><term><parameter>req_version</parameter> :</term>
495
</simpara></listitem></varlistentry>
496
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
497
</simpara></listitem></varlistentry>
498
</variablelist></refsect2>