4
4
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
5
<title>Data Checksums</title>
6
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
6
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
7
7
<link rel="home" href="index.html" title="GLib Reference Manual">
8
8
<link rel="up" href="glib-utilities.html" title="GLib Utilities">
9
9
<link rel="prev" href="glib-Base64-Encoding.html" title="Base64 Encoding">
10
10
<link rel="next" href="glib-I18N.html" title="Internationalization">
11
<meta name="generator" content="GTK-Doc V1.13 (XML mode)">
11
<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
12
12
<link rel="stylesheet" href="style.css" type="text/css">
13
13
<link rel="chapter" href="glib.html" title="GLib Overview">
14
14
<link rel="chapter" href="glib-fundamentals.html" title="GLib Fundamentals">
58
58
<div class="refsynopsisdiv" title="Synopsis">
59
59
<a name="glib-Data-Checksums.synopsis"></a><h2>Synopsis</h2>
60
60
<pre class="synopsis">
61
62
#include <glib.h>
63
64
enum <a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a>;
64
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="returnvalue">gssize</span></a> <a class="link" href="glib-Data-Checksums.html#g-checksum-type-get-length" title="g_checksum_type_get_length ()">g_checksum_type_get_length</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type);
65
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize">gssize</a> <a class="link" href="glib-Data-Checksums.html#g-checksum-type-get-length" title="g_checksum_type_get_length ()">g_checksum_type_get_length</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type);
65
66
<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a>;
66
<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> * <a class="link" href="glib-Data-Checksums.html#g-checksum-new" title="g_checksum_new ()">g_checksum_new</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type);
67
<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> * <a class="link" href="glib-Data-Checksums.html#g-checksum-copy" title="g_checksum_copy ()">g_checksum_copy</a> (const <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);
68
<span class="returnvalue">void</span> <a class="link" href="glib-Data-Checksums.html#g-checksum-free" title="g_checksum_free ()">g_checksum_free</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);
69
<span class="returnvalue">void</span> <a class="link" href="glib-Data-Checksums.html#g-checksum-reset" title="g_checksum_reset ()">g_checksum_reset</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);
70
<span class="returnvalue">void</span> <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()">g_checksum_update</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum,
71
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *data,
72
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="returnvalue">gssize</span></a> length);
73
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="glib-Data-Checksums.html#g-checksum-get-string" title="g_checksum_get_string ()">g_checksum_get_string</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);
74
<span class="returnvalue">void</span> <a class="link" href="glib-Data-Checksums.html#g-checksum-get-digest" title="g_checksum_get_digest ()">g_checksum_get_digest</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum,
75
<a class="link" href="glib-Basic-Types.html#guint8" title="guint8"><span class="returnvalue">guint8</span></a> *buffer,
76
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> *digest_len);
67
<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> * <a class="link" href="glib-Data-Checksums.html#g-checksum-new" title="g_checksum_new ()">g_checksum_new</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type);
68
<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> * <a class="link" href="glib-Data-Checksums.html#g-checksum-copy" title="g_checksum_copy ()">g_checksum_copy</a> (const <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum);
69
void <a class="link" href="glib-Data-Checksums.html#g-checksum-free" title="g_checksum_free ()">g_checksum_free</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum);
70
void <a class="link" href="glib-Data-Checksums.html#g-checksum-reset" title="g_checksum_reset ()">g_checksum_reset</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum);
71
void <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()">g_checksum_update</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum,
72
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar">guchar</a> *data,
73
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize">gssize</a> length);
74
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> * <a class="link" href="glib-Data-Checksums.html#g-checksum-get-string" title="g_checksum_get_string ()">g_checksum_get_string</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum);
75
void <a class="link" href="glib-Data-Checksums.html#g-checksum-get-digest" title="g_checksum_get_digest ()">g_checksum_get_digest</a> (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum,
76
<a class="link" href="glib-Basic-Types.html#guint8" title="guint8">guint8</a> *buffer,
77
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize">gsize</a> *digest_len);
78
<a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="glib-Data-Checksums.html#g-compute-checksum-for-data" title="g_compute_checksum_for_data ()">g_compute_checksum_for_data</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type,
79
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *data,
80
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> length);
81
<a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="glib-Data-Checksums.html#g-compute-checksum-for-string" title="g_compute_checksum_for_string ()">g_compute_checksum_for_string</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type,
82
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *str,
83
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="returnvalue">gssize</span></a> length);
79
<a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> * <a class="link" href="glib-Data-Checksums.html#g-compute-checksum-for-data" title="g_compute_checksum_for_data ()">g_compute_checksum_for_data</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type,
80
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar">guchar</a> *data,
81
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize">gsize</a> length);
82
<a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> * <a class="link" href="glib-Data-Checksums.html#g-compute-checksum-for-string" title="g_compute_checksum_for_string ()">g_compute_checksum_for_string</a> (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type,
83
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> *str,
84
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize">gssize</a> length);
86
87
<div class="refsect1" title="Description">
122
125
Note that the <a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="type">GChecksumType</span></a> enumeration may be extended at a later
123
126
date to include new hashing algorithm types.</p>
124
129
<div class="variablelist"><table border="0">
125
130
<col align="left" valign="top">
128
<td><p><a name="G-CHECKSUM-MD5:CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_MD5</code></span></p></td>
133
<td><p><a name="G-CHECKSUM-MD5--CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_MD5</code></span></p></td>
129
134
<td> Use the MD5 hashing algorithm
133
<td><p><a name="G-CHECKSUM-SHA1:CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_SHA1</code></span></p></td>
138
<td><p><a name="G-CHECKSUM-SHA1--CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_SHA1</code></span></p></td>
134
139
<td> Use the SHA-1 hashing algorithm
138
<td><p><a name="G-CHECKSUM-SHA256:CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_SHA256</code></span></p></td>
143
<td><p><a name="G-CHECKSUM-SHA256--CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_SHA256</code></span></p></td>
139
144
<td> Use the SHA-256 hashing algorithm
176
183
An opaque structure representing a checksumming operation.
177
184
To create a new GChecksum, use <a class="link" href="glib-Data-Checksums.html#g-checksum-new" title="g_checksum_new ()"><code class="function">g_checksum_new()</code></a>. To free
178
185
a GChecksum, use <a class="link" href="glib-Data-Checksums.html#g-checksum-free" title="g_checksum_free ()"><code class="function">g_checksum_free()</code></a>.</p>
179
188
<p class="since">Since 2.16</p>
182
191
<div class="refsect2" title="g_checksum_new ()">
183
192
<a name="g-checksum-new"></a><h3>g_checksum_new ()</h3>
184
<pre class="programlisting"><a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> * g_checksum_new (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type);</pre>
193
<pre class="programlisting"><a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> * g_checksum_new (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type);</pre>
186
195
Creates a new <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>, using the checksum algorithm <em class="parameter"><code>checksum_type</code></em>.
187
If the <em class="parameter"><code>checksum_type</code></em> is not known, <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is returned.
196
If the <em class="parameter"><code>checksum_type</code></em> is not known, <a class="link" href="glib-Standard-Macros.html#NULL--CAPS" title="NULL"><code class="literal">NULL</code></a> is returned.
188
197
A <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> can be used to compute the checksum, or digest, of an
189
198
arbitrary binary blob, using different hashing algorithms.
220
231
<div class="refsect2" title="g_checksum_copy ()">
221
232
<a name="g-checksum-copy"></a><h3>g_checksum_copy ()</h3>
222
<pre class="programlisting"><a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> * g_checksum_copy (const <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);</pre>
233
<pre class="programlisting"><a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> * g_checksum_copy (const <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum);</pre>
224
235
Copies a <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>. If <em class="parameter"><code>checksum</code></em> has been closed, by calling
225
236
<a class="link" href="glib-Data-Checksums.html#g-checksum-get-string" title="g_checksum_get_string ()"><code class="function">g_checksum_get_string()</code></a> or <a class="link" href="glib-Data-Checksums.html#g-checksum-get-digest" title="g_checksum_get_digest ()"><code class="function">g_checksum_get_digest()</code></a>, the copied
226
237
checksum will be closed as well.</p>
227
240
<div class="variablelist"><table border="0">
228
241
<col align="left" valign="top">
279
296
<div class="refsect2" title="g_checksum_update ()">
280
297
<a name="g-checksum-update"></a><h3>g_checksum_update ()</h3>
281
<pre class="programlisting"><span class="returnvalue">void</span> g_checksum_update (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum,
282
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *data,
283
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="returnvalue">gssize</span></a> length);</pre>
298
<pre class="programlisting">void g_checksum_update (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum,
299
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar">guchar</a> *data,
300
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize">gssize</a> length);</pre>
285
302
Feeds <em class="parameter"><code>data</code></em> into an existing <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>. The checksum must still be
286
303
open, that is <a class="link" href="glib-Data-Checksums.html#g-checksum-get-string" title="g_checksum_get_string ()"><code class="function">g_checksum_get_string()</code></a> or <a class="link" href="glib-Data-Checksums.html#g-checksum-get-digest" title="g_checksum_get_digest ()"><code class="function">g_checksum_get_digest()</code></a> must
287
304
not have been called on <em class="parameter"><code>checksum</code></em>.</p>
288
307
<div class="variablelist"><table border="0">
289
308
<col align="left" valign="top">
344
365
<div class="refsect2" title="g_checksum_get_digest ()">
345
366
<a name="g-checksum-get-digest"></a><h3>g_checksum_get_digest ()</h3>
346
<pre class="programlisting"><span class="returnvalue">void</span> g_checksum_get_digest (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum,
347
<a class="link" href="glib-Basic-Types.html#guint8" title="guint8"><span class="returnvalue">guint8</span></a> *buffer,
348
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> *digest_len);</pre>
367
<pre class="programlisting">void g_checksum_get_digest (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum">GChecksum</a> *checksum,
368
<a class="link" href="glib-Basic-Types.html#guint8" title="guint8">guint8</a> *buffer,
369
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize">gsize</a> *digest_len);</pre>
350
371
Gets the digest from <em class="parameter"><code>checksum</code></em> as a raw binary vector and places it
351
372
into <em class="parameter"><code>buffer</code></em>. The size of the digest depends on the type of checksum.
380
403
<div class="refsect2" title="g_compute_checksum_for_data ()">
381
404
<a name="g-compute-checksum-for-data"></a><h3>g_compute_checksum_for_data ()</h3>
382
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * g_compute_checksum_for_data (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type,
383
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar"><span class="returnvalue">guchar</span></a> *data,
384
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> length);</pre>
405
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> * g_compute_checksum_for_data (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type,
406
const <a class="link" href="glib-Basic-Types.html#guchar" title="guchar">guchar</a> *data,
407
<a class="link" href="glib-Basic-Types.html#gsize" title="gsize">gsize</a> length);</pre>
386
409
Computes the checksum for a binary <em class="parameter"><code>data</code></em> of <em class="parameter"><code>length</code></em>. This is a
387
410
convenience wrapper for <a class="link" href="glib-Data-Checksums.html#g-checksum-new" title="g_checksum_new ()"><code class="function">g_checksum_new()</code></a>, <a class="link" href="glib-Data-Checksums.html#g-checksum-get-string" title="g_checksum_get_string ()"><code class="function">g_checksum_get_string()</code></a>
422
447
<div class="refsect2" title="g_compute_checksum_for_string ()">
423
448
<a name="g-compute-checksum-for-string"></a><h3>g_compute_checksum_for_string ()</h3>
424
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * g_compute_checksum_for_string (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type,
425
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *str,
426
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="returnvalue">gssize</span></a> length);</pre>
449
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> * g_compute_checksum_for_string (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType">GChecksumType</a> checksum_type,
450
const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar">gchar</a> *str,
451
<a class="link" href="glib-Basic-Types.html#gssize" title="gssize">gssize</a> length);</pre>
428
453
Computes the checksum of a string.
431
456
The hexadecimal string returned will be in lower case.</p>
432
459
<div class="variablelist"><table border="0">
433
460
<col align="left" valign="top">