This file is indexed.

/usr/share/gtk-doc/html/gcr-3/GcrSecretExchange.html is in libgcr-3-doc 3.10.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GcrSecretExchange</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="Gcr Library Reference Manual">
<link rel="up" href="misc.html" title="Part VI. Miscellaneous">
<link rel="prev" href="gcr-Key-Fingerprints.html" title="Key Fingerprints">
<link rel="next" href="gcr-Non-pageable-Memory.html" title="Non-pageable Memory">
<meta name="generator" content="GTK-Doc V1.19 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="gcr-Key-Fingerprints.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="misc.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">Gcr Library Reference Manual</th>
<td><a accesskey="n" href="gcr-Non-pageable-Memory.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#GcrSecretExchange.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#GcrSecretExchange.description" class="shortcut">Description</a>
                   | 
                  <a href="#GcrSecretExchange.object-hierarchy" class="shortcut">Object Hierarchy</a>
</td></tr>
</table>
<div class="refentry">
<a name="GcrSecretExchange"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GcrSecretExchange.top_of_page"></a>GcrSecretExchange</span></h2>
<p>GcrSecretExchange — Exchange secrets between processes in an unexposed way.</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="GcrSecretExchange.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">struct              <a class="link" href="GcrSecretExchange.html#GcrSecretExchange-struct" title="struct GcrSecretExchange">GcrSecretExchange</a>;
struct              <a class="link" href="GcrSecretExchange.html#GcrSecretExchangeClass" title="struct GcrSecretExchangeClass">GcrSecretExchangeClass</a>;
#define             <a class="link" href="GcrSecretExchange.html#GCR-SECRET-EXCHANGE-PROTOCOL-1:CAPS" title="GCR_SECRET_EXCHANGE_PROTOCOL_1">GCR_SECRET_EXCHANGE_PROTOCOL_1</a>
<a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="returnvalue">GcrSecretExchange</span></a> * <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-new" title="gcr_secret_exchange_new ()">gcr_secret_exchange_new</a>             (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *protocol</code></em>);
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *             <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-begin" title="gcr_secret_exchange_begin ()">gcr_secret_exchange_begin</a>           (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>);
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()">gcr_secret_exchange_receive</a>         (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>,
                                                         <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *exchange</code></em>);
const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-get-protocol" title="gcr_secret_exchange_get_protocol ()">gcr_secret_exchange_get_protocol</a>    (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>);
const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-get-secret" title="gcr_secret_exchange_get_secret ()">gcr_secret_exchange_get_secret</a>      (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>,
                                                         <em class="parameter"><code><span class="type">gsize</span> *secret_len</code></em>);
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *             <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-send" title="gcr_secret_exchange_send ()">gcr_secret_exchange_send</a>            (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>,
                                                         <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *secret</code></em>,
                                                         <em class="parameter"><code><span class="type">gssize</span> secret_len</code></em>);
</pre>
</div>
<div class="refsect1">
<a name="GcrSecretExchange.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>
   +----GcrSecretExchange
</pre>
</div>
<div class="refsect1">
<a name="GcrSecretExchange.description"></a><h2>Description</h2>
<p>
Allows exchange of secrets between two processes on the same system without
exposing those secrets to things like loggers, non-pageable memory etc.
</p>
<p>
This does not protect against active attacks like MITM attacks.
</p>
<p>
Each side creates a <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object, and one of the sides calls
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-begin" title="gcr_secret_exchange_begin ()"><code class="function">gcr_secret_exchange_begin()</code></a>. This creates a string, which should be passed
to the other side. Each side passes the strings it receives into
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()"><code class="function">gcr_secret_exchange_receive()</code></a>.
</p>
<p>
In order to send a reply (either with or without a secret) use
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-send" title="gcr_secret_exchange_send ()"><code class="function">gcr_secret_exchange_send()</code></a>. A side must have had <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()"><code class="function">gcr_secret_exchange_receive()</code></a>
successfully called before it can use <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-send" title="gcr_secret_exchange_send ()"><code class="function">gcr_secret_exchange_send()</code></a>.
</p>
<p>
The <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> objects can be used for multiple iterations of the
conversation, or for just one request/reply. The only limitation being that
the initial request cannot contain a secret.
</p>
<p>
Caveat: Information about the approximate length (rounded up to the nearest
16 bytes) may be leaked. If this is considered inacceptable, do not use
<a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a>.
</p>
</div>
<div class="refsect1">
<a name="GcrSecretExchange.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="GcrSecretExchange-struct"></a><h3>struct GcrSecretExchange</h3>
<pre class="programlisting">struct GcrSecretExchange;</pre>
<p>
An object representing one side of a secret exchange.
</p>
</div>
<hr>
<div class="refsect2">
<a name="GcrSecretExchangeClass"></a><h3>struct GcrSecretExchangeClass</h3>
<pre class="programlisting">struct GcrSecretExchangeClass {
};
</pre>
<p>
The class for <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a>
</p>
</div>
<hr>
<div class="refsect2">
<a name="GCR-SECRET-EXCHANGE-PROTOCOL-1:CAPS"></a><h3>GCR_SECRET_EXCHANGE_PROTOCOL_1</h3>
<pre class="programlisting">#define GCR_SECRET_EXCHANGE_PROTOCOL_1 "sx-aes-1"
</pre>
<p>
The current secret exchange protocol. Key agreement is done using DH with the
1536 bit IKE parameter group. Keys are derived using SHA256 with HKDF. The
transport encryption is done with 128 bit AES.
</p>
</div>
<hr>
<div class="refsect2">
<a name="gcr-secret-exchange-new"></a><h3>gcr_secret_exchange_new ()</h3>
<pre class="programlisting"><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="returnvalue">GcrSecretExchange</span></a> * gcr_secret_exchange_new             (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *protocol</code></em>);</pre>
<p>
Create a new secret exchange object.
</p>
<p>
Specify a protocol of <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to allow any protocol. This is especially
relevant on the side of the exchange that does not call
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-begin" title="gcr_secret_exchange_begin ()"><code class="function">gcr_secret_exchange_begin()</code></a>, that is the originator. Currently the only
protocol supported is <a class="link" href="GcrSecretExchange.html#GCR-SECRET-EXCHANGE-PROTOCOL-1:CAPS" title="GCR_SECRET_EXCHANGE_PROTOCOL_1"><code class="literal">GCR_SECRET_EXCHANGE_PROTOCOL_1</code></a>.
</p>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>protocol</code></em> :</span></p></td>
<td>the exchange protocol to use. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>A new <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="gcr-secret-exchange-begin"></a><h3>gcr_secret_exchange_begin ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *             gcr_secret_exchange_begin           (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>);</pre>
<p>
Begin the secret exchange. The resulting string should be sent to the other
side of the exchange. The other side should use <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()"><code class="function">gcr_secret_exchange_receive()</code></a>
to process the string.
</p>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
<td>a <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>A newly allocated string to be sent to the other
side of the secret exchange. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="gcr-secret-exchange-receive"></a><h3>gcr_secret_exchange_receive ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gcr_secret_exchange_receive         (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>,
                                                         <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *exchange</code></em>);</pre>
<p>
Receive a string from the other side of secret exchange. This string will
have been created by <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-begin" title="gcr_secret_exchange_begin ()"><code class="function">gcr_secret_exchange_begin()</code></a> or <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-send" title="gcr_secret_exchange_send ()"><code class="function">gcr_secret_exchange_send()</code></a>.
</p>
<p>
After this call completes successfully the value returned from
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-get-secret" title="gcr_secret_exchange_get_secret ()"><code class="function">gcr_secret_exchange_get_secret()</code></a> will have changed.
</p>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
<td>a <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>exchange</code></em> :</span></p></td>
<td>the string received</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>whether the string was successfully parsed and received</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="gcr-secret-exchange-get-protocol"></a><h3>gcr_secret_exchange_get_protocol ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       gcr_secret_exchange_get_protocol    (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>);</pre>
<p>
Will return <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no protocol was specified, and either
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-begin" title="gcr_secret_exchange_begin ()"><code class="function">gcr_secret_exchange_begin()</code></a> or <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()"><code class="function">gcr_secret_exchange_receive()</code></a> have not been
called successfully.
</p>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
<td>a <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object
Get the secret exchange protocol.</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the protocol or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="gcr-secret-exchange-get-secret"></a><h3>gcr_secret_exchange_get_secret ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       gcr_secret_exchange_get_secret      (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>,
                                                         <em class="parameter"><code><span class="type">gsize</span> *secret_len</code></em>);</pre>
<p>
Returns the last secret received. If no secret has yet been received this
will return <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. The string is owned by the <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object
and will be valid until the next time that <a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()"><code class="function">gcr_secret_exchange_receive()</code></a>
is called on this object, or the object is destroyed.
</p>
<p>
Depending on the secret passed into the other side of the secret exchange,
the result may be a binary string. It does however have a null terminator,
so if you're certain that it is does not contain arbitrary binary data,
it can be used as a string.
</p>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
<td>a <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>secret_len</code></em> :</span></p></td>
<td>optionally, a location to store the length of returned secret. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>the last secret received. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=secret_len]</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="gcr-secret-exchange-send"></a><h3>gcr_secret_exchange_send ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *             gcr_secret_exchange_send            (<em class="parameter"><code><a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> *self</code></em>,
                                                         <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *secret</code></em>,
                                                         <em class="parameter"><code><span class="type">gssize</span> secret_len</code></em>);</pre>
<p>
Send a reply to the other side of the secret exchange, optionally sending a
secret.
</p>
<p>
<a class="link" href="GcrSecretExchange.html#gcr-secret-exchange-receive" title="gcr_secret_exchange_receive ()"><code class="function">gcr_secret_exchange_receive()</code></a> must have been successfully called at least
once on this object. In other words this object must have received data
from the other side of the secret exchange, before we can send a secret.
</p>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
<td>a <a class="link" href="GcrSecretExchange.html" title="GcrSecretExchange"><span class="type">GcrSecretExchange</span></a> object</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>secret</code></em> :</span></p></td>
<td>optionally, a secret to send to the other side. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>secret_len</code></em> :</span></p></td>
<td>length of <em class="parameter"><code>secret</code></em>, or -1 if null terminated</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a newly allocated string to be sent to the other
side of the secret exchange. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.19</div>
</body>
</html>