1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GnuTLS API Reference Manual">
8 <link rel="up" href="intro.html" title="GnuTLS API Reference Manual">
9 <link rel="prev" href="gnutls-gnutls.html" title="gnutls">
10 <link rel="next" href="gnutls-x509.html" title="x509">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
17 <td><a accesskey="p" href="gnutls-gnutls.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="intro.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GnuTLS API Reference Manual</th>
21 <td><a accesskey="n" href="gnutls-x509.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#gnutls-extra.synopsis" class="shortcut">Top</a>
26 <a href="#gnutls-extra.description" class="shortcut">Description</a>
29 <div class="refentry">
30 <a name="gnutls-extra"></a><div class="titlepage"></div>
31 <div class="refnamediv"><table width="100%"><tr>
33 <h2><span class="refentrytitle"><a name="gnutls-extra.top_of_page"></a>extra</span></h2>
36 <td valign="top" align="right"></td>
38 <div class="refsynopsisdiv">
39 <a name="gnutls-extra.synopsis"></a><h2>Synopsis</h2>
40 <pre class="synopsis">#define <a class="link" href="gnutls-extra.html#GNUTLS-EXTRA-VERSION:CAPS" title="GNUTLS_EXTRA_VERSION">GNUTLS_EXTRA_VERSION</a>
41 enum <a class="link" href="gnutls-extra.html#gnutls-ia-apptype-t" title="enum gnutls_ia_apptype_t">gnutls_ia_apptype_t</a>;
42 <a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> (<a class="link" href="gnutls-extra.html#gnutls-ia-avp-func" title="gnutls_ia_avp_func ()">*gnutls_ia_avp_func</a>) (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
43 <em class="parameter"><code><span class="type">void</span> *ptr</code></em>,
44 <em class="parameter"><code>const <span class="type">char</span> *last</code></em>,
45 <em class="parameter"><code><span class="type">size_t</span> lastlen</code></em>,
46 <em class="parameter"><code><span class="type">char</span> **next</code></em>,
47 <em class="parameter"><code><span class="type">size_t</span> *nextlen</code></em>);
48 <span class="returnvalue">void</span> <a class="link" href="gnutls-extra.html#gnutls-ia-free-client-credentials" title="gnutls_ia_free_client_credentials ()">gnutls_ia_free_client_credentials</a> ();
49 <a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> <a class="link" href="gnutls-extra.html#gnutls-ia-verify-endphase" title="gnutls_ia_verify_endphase ()">gnutls_ia_verify_endphase</a> (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
50 <em class="parameter"><code>const <span class="type">char</span> *checksum</code></em>);
51 <span class="returnvalue">ssize_t</span> <a class="link" href="gnutls-extra.html#gnutls-ia-send" title="gnutls_ia_send ()">gnutls_ia_send</a> (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
52 <em class="parameter"><code>const <span class="type">char</span> *data</code></em>,
53 <em class="parameter"><code><span class="type">size_t</span> sizeofdata</code></em>);
54 <span class="returnvalue">ssize_t</span> <a class="link" href="gnutls-extra.html#gnutls-ia-recv" title="gnutls_ia_recv ()">gnutls_ia_recv</a> (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
55 <em class="parameter"><code><span class="type">char</span> *data</code></em>,
56 <em class="parameter"><code><span class="type">size_t</span> sizeofdata</code></em>);
57 <a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> <a class="link" href="gnutls-extra.html#gnutls-ia-generate-challenge" title="gnutls_ia_generate_challenge ()">gnutls_ia_generate_challenge</a> (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
58 <em class="parameter"><code><span class="type">size_t</span> buffer_size</code></em>);
59 <a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> <a class="link" href="gnutls-extra.html#gnutls-register-md5-handler" title="gnutls_register_md5_handler ()">gnutls_register_md5_handler</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
60 const <span class="returnvalue">char</span> * <a class="link" href="gnutls-extra.html#gnutls-extra-check-version" title="gnutls_extra_check_version ()">gnutls_extra_check_version</a> (<em class="parameter"><code>const <span class="type">char</span> *req_version</code></em>);
63 <div class="refsect1">
64 <a name="gnutls-extra.description"></a><h2>Description</h2>
68 <div class="refsect1">
69 <a name="gnutls-extra.details"></a><h2>Details</h2>
70 <div class="refsect2">
71 <a name="GNUTLS-EXTRA-VERSION:CAPS"></a><h3>GNUTLS_EXTRA_VERSION</h3>
72 <pre class="programlisting">#define GNUTLS_EXTRA_VERSION GNUTLS_VERSION
78 <div class="refsect2">
79 <a name="gnutls-ia-apptype-t"></a><h3>enum gnutls_ia_apptype_t</h3>
80 <pre class="programlisting">typedef enum {
81 GNUTLS_IA_APPLICATION_PAYLOAD = 0,
82 GNUTLS_IA_INTERMEDIATE_PHASE_FINISHED = 1,
83 GNUTLS_IA_FINAL_PHASE_FINISHED = 2
84 } gnutls_ia_apptype_t;
87 Enumeration of different certificate encoding formats.
89 <div class="variablelist"><table border="0">
90 <col align="left" valign="top">
93 <td><p><a name="GNUTLS-IA-APPLICATION-PAYLOAD:CAPS"></a><span class="term"><code class="literal">GNUTLS_IA_APPLICATION_PAYLOAD</code></span></p></td>
94 <td>TLS/IA application payload.
98 <td><p><a name="GNUTLS-IA-INTERMEDIATE-PHASE-FINISHED:CAPS"></a><span class="term"><code class="literal">GNUTLS_IA_INTERMEDIATE_PHASE_FINISHED</code></span></p></td>
99 <td>TLS/IA intermediate phase finished.
103 <td><p><a name="GNUTLS-IA-FINAL-PHASE-FINISHED:CAPS"></a><span class="term"><code class="literal">GNUTLS_IA_FINAL_PHASE_FINISHED</code></span></p></td>
104 <td>TLS/IA final phase finished.
111 <div class="refsect2">
112 <a name="gnutls-ia-avp-func"></a><h3>gnutls_ia_avp_func ()</h3>
113 <pre class="programlisting"><a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> (*gnutls_ia_avp_func) (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
114 <em class="parameter"><code><span class="type">void</span> *ptr</code></em>,
115 <em class="parameter"><code>const <span class="type">char</span> *last</code></em>,
116 <em class="parameter"><code><span class="type">size_t</span> lastlen</code></em>,
117 <em class="parameter"><code><span class="type">char</span> **next</code></em>,
118 <em class="parameter"><code><span class="type">size_t</span> *nextlen</code></em>);</pre>
123 <div class="refsect2">
124 <a name="gnutls-ia-free-client-credentials"></a><h3>gnutls_ia_free_client_credentials ()</h3>
125 <pre class="programlisting"><span class="returnvalue">void</span> gnutls_ia_free_client_credentials ();</pre>
127 This structure is complex enough to manipulate directly thus this
128 helper function is provided in order to free (deallocate) it.
130 <div class="variablelist"><table border="0">
131 <col align="left" valign="top">
133 <td><p><span class="term"><em class="parameter"><code>sc</code></em> :</span></p></td>
134 <td>is a <span class="type">gnutls_ia_client_credentials_t</span> structure.</td>
139 <div class="refsect2">
140 <a name="gnutls-ia-verify-endphase"></a><h3>gnutls_ia_verify_endphase ()</h3>
141 <pre class="programlisting"><a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> gnutls_ia_verify_endphase (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
142 <em class="parameter"><code>const <span class="type">char</span> *checksum</code></em>);</pre>
144 Verify TLS/IA end phase checksum data. If verification fails, the
145 <a class="link" href="gnutls-gnutls.html#GNUTLS-A-INNER-APPLICATION-VERIFICATION:CAPS"><code class="literal">GNUTLS_A_INNER_APPLICATION_VERIFICATION</code></a> alert is sent to the other
149 This function is called when <a class="link" href="gnutls-extra.html#gnutls-ia-recv" title="gnutls_ia_recv ()"><code class="function">gnutls_ia_recv()</code></a> return
150 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-WARNING-IA-IPHF-RECEIVED:CAPS" title="GNUTLS_E_WARNING_IA_IPHF_RECEIVED"><code class="literal">GNUTLS_E_WARNING_IA_IPHF_RECEIVED</code></a> or
151 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-WARNING-IA-FPHF-RECEIVED:CAPS" title="GNUTLS_E_WARNING_IA_FPHF_RECEIVED"><code class="literal">GNUTLS_E_WARNING_IA_FPHF_RECEIVED</code></a>.
153 <div class="variablelist"><table border="0">
154 <col align="left" valign="top">
157 <td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
158 <td>is a <a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> structure.</td>
161 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
162 <td>12-byte checksum data, received from <a class="link" href="gnutls-extra.html#gnutls-ia-recv" title="gnutls_ia_recv ()"><code class="function">gnutls_ia_recv()</code></a>.</td>
165 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
166 <td>Return 0 on successful verification, or an error
167 code. If the checksum verification of the end phase message fails,
168 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-IA-VERIFY-FAILED:CAPS" title="GNUTLS_E_IA_VERIFY_FAILED"><code class="literal">GNUTLS_E_IA_VERIFY_FAILED</code></a> is returned.</td>
174 <div class="refsect2">
175 <a name="gnutls-ia-send"></a><h3>gnutls_ia_send ()</h3>
176 <pre class="programlisting"><span class="returnvalue">ssize_t</span> gnutls_ia_send (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
177 <em class="parameter"><code>const <span class="type">char</span> *data</code></em>,
178 <em class="parameter"><code><span class="type">size_t</span> sizeofdata</code></em>);</pre>
180 Send TLS/IA application payload data. This function has the
181 similar semantics with <code class="function">send()</code>. The only difference is that it
182 accepts a GnuTLS session, and uses different error codes.
185 The TLS/IA protocol is synchronous, so you cannot send more than
186 one packet at a time. The client always send the first packet.
189 To finish an application phase in the server, use
190 <code class="function">gnutls_ia_endphase_send()</code>. The client cannot end an application
191 phase unilaterally; rather, a client is required to respond with an
192 endphase of its own if gnutls_ia_recv indicates that the server has
196 If the EINTR is returned by the internal push function (the default
197 is <code class="function">send()</code>} then <a class="link" href="gnutls-gnutls.html#GNUTLS-E-INTERRUPTED:CAPS" title="GNUTLS_E_INTERRUPTED"><code class="literal">GNUTLS_E_INTERRUPTED</code></a> will be returned. If
198 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-INTERRUPTED:CAPS" title="GNUTLS_E_INTERRUPTED"><code class="literal">GNUTLS_E_INTERRUPTED</code></a> or <a class="link" href="gnutls-gnutls.html#GNUTLS-E-AGAIN:CAPS" title="GNUTLS_E_AGAIN"><code class="literal">GNUTLS_E_AGAIN</code></a> is returned, you must call
199 this function again, with the same parameters; alternatively you
200 could provide a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> pointer for data, and 0 for size.
202 <div class="variablelist"><table border="0">
203 <col align="left" valign="top">
206 <td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
207 <td>is a <a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> structure.</td>
210 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
211 <td>contains the data to send</td>
214 <td><p><span class="term"><em class="parameter"><code>sizeofdata</code></em> :</span></p></td>
215 <td>is the length of the data</td>
218 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
219 <td>The number of bytes sent, or a negative error code.</td>
225 <div class="refsect2">
226 <a name="gnutls-ia-recv"></a><h3>gnutls_ia_recv ()</h3>
227 <pre class="programlisting"><span class="returnvalue">ssize_t</span> gnutls_ia_recv (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
228 <em class="parameter"><code><span class="type">char</span> *data</code></em>,
229 <em class="parameter"><code><span class="type">size_t</span> sizeofdata</code></em>);</pre>
231 Receive TLS/IA data. This function has the similar semantics with
232 <code class="function">recv()</code>. The only difference is that it accepts a GnuTLS session,
233 and uses different error codes.
236 If the server attempt to finish an application phase, this function
237 will return <a class="link" href="gnutls-gnutls.html#GNUTLS-E-WARNING-IA-IPHF-RECEIVED:CAPS" title="GNUTLS_E_WARNING_IA_IPHF_RECEIVED"><code class="literal">GNUTLS_E_WARNING_IA_IPHF_RECEIVED</code></a> or
238 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-WARNING-IA-FPHF-RECEIVED:CAPS" title="GNUTLS_E_WARNING_IA_FPHF_RECEIVED"><code class="literal">GNUTLS_E_WARNING_IA_FPHF_RECEIVED</code></a>. The caller should then invoke
239 <a class="link" href="gnutls-extra.html#gnutls-ia-verify-endphase" title="gnutls_ia_verify_endphase ()"><code class="function">gnutls_ia_verify_endphase()</code></a>, and if it runs the client side, also
240 send an endphase message of its own using gnutls_ia_endphase_send.
243 If EINTR is returned by the internal push function (the default is
244 <em class="parameter"><code>code</code></em>{<code class="function">recv()</code>}) then GNUTLS_E_INTERRUPTED will be returned. If
245 GNUTLS_E_INTERRUPTED or GNUTLS_E_AGAIN is returned, you must call
246 this function again, with the same parameters; alternatively you
247 could provide a NULL pointer for data, and 0 for size.
249 <div class="variablelist"><table border="0">
250 <col align="left" valign="top">
253 <td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
254 <td>is a <a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> structure.</td>
257 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
258 <td>the buffer that the data will be read into, must hold >= 12 bytes.</td>
261 <td><p><span class="term"><em class="parameter"><code>sizeofdata</code></em> :</span></p></td>
262 <td>the number of requested bytes, must be >= 12.</td>
265 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
266 <td>The number of bytes received. A negative error code is
267 returned in case of an error. The
268 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-WARNING-IA-IPHF-RECEIVED:CAPS" title="GNUTLS_E_WARNING_IA_IPHF_RECEIVED"><code class="literal">GNUTLS_E_WARNING_IA_IPHF_RECEIVED</code></a> and
269 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-WARNING-IA-FPHF-RECEIVED:CAPS" title="GNUTLS_E_WARNING_IA_FPHF_RECEIVED"><code class="literal">GNUTLS_E_WARNING_IA_FPHF_RECEIVED</code></a> errors are returned when an
270 application phase finished message has been sent by the server.</td>
276 <div class="refsect2">
277 <a name="gnutls-ia-generate-challenge"></a><h3>gnutls_ia_generate_challenge ()</h3>
278 <pre class="programlisting"><a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> gnutls_ia_generate_challenge (<em class="parameter"><code><a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> session</code></em>,
279 <em class="parameter"><code><span class="type">size_t</span> buffer_size</code></em>);</pre>
281 Generate an application challenge that the client cannot control or
282 predict, based on the TLS/IA inner secret.
284 <div class="variablelist"><table border="0">
285 <col align="left" valign="top">
288 <td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
289 <td>is a <a class="link" href="gnutls-gnutls.html#gnutls-session-t" title="gnutls_session_t"><span class="type">gnutls_session_t</span></a> structure.</td>
292 <td><p><span class="term"><em class="parameter"><code>buffer_size</code></em> :</span></p></td>
293 <td>size of output buffer.</td>
296 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
297 <td>Returns 0 on success, or an negative error code.</td>
303 <div class="refsect2">
304 <a name="gnutls-register-md5-handler"></a><h3>gnutls_register_md5_handler ()</h3>
305 <pre class="programlisting"><a class="link" href="gnutls-crypto.html#int" title="int ()"><span class="returnvalue">int</span></a> gnutls_register_md5_handler (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
307 Register a non-libgcrypt based MD5 and HMAC-MD5 handler. This is
308 useful if you run Libgcrypt in FIPS-mode. Normally TLS requires
309 use of MD5, so without this you cannot use GnuTLS with libgcrypt in
312 <div class="variablelist"><table border="0">
313 <col align="left" valign="top">
315 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
317 <a class="link" href="gnutls-gnutls.html#GNUTLS-E-SUCCESS:CAPS" title="GNUTLS_E_SUCCESS"><code class="literal">GNUTLS_E_SUCCESS</code></a> on success, otherwise an error.</td>
320 <p class="since">Since 2.6.0</p>
323 <div class="refsect2">
324 <a name="gnutls-extra-check-version"></a><h3>gnutls_extra_check_version ()</h3>
325 <pre class="programlisting">const <span class="returnvalue">char</span> * gnutls_extra_check_version (<em class="parameter"><code>const <span class="type">char</span> *req_version</code></em>);</pre>
327 Check GnuTLS Extra Library version.
330 See <a class="link" href="gnutls-extra.html#GNUTLS-EXTRA-VERSION:CAPS" title="GNUTLS_EXTRA_VERSION"><code class="literal">GNUTLS_EXTRA_VERSION</code></a> for a suitable <em class="parameter"><code>req_version</code></em> string.
332 <div class="variablelist"><table border="0">
333 <col align="left" valign="top">
336 <td><p><span class="term"><em class="parameter"><code>req_version</code></em> :</span></p></td>
337 <td>version string to compare with, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
340 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
341 <td>Check that the version of the library is at
342 minimum the one given as a string in <em class="parameter"><code>req_version</code></em> and return the
343 actual version string of the library; return <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
344 condition is not met. If <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is passed to this function no
345 check is done and only the version string is returned.</td>
354 Generated by GTK-Doc V1.18</div>