Initial commit
[platform/upstream/glib2.0.git] / docs / reference / glib / html / glib-Data-Checksums.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>Data Checksums</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7 <link rel="home" href="index.html" title="GLib Reference Manual">
8 <link rel="up" href="glib-utilities.html" title="GLib Utilities">
9 <link rel="prev" href="glib-Base64-Encoding.html" title="Base64 Encoding">
10 <link rel="next" href="glib-I18N.html" title="Internationalization">
11 <meta name="generator" content="GTK-Doc V1.13 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 <link rel="chapter" href="glib.html" title="GLib Overview">
14 <link rel="chapter" href="glib-fundamentals.html" title="GLib Fundamentals">
15 <link rel="chapter" href="glib-core.html" title="GLib Core Application Support">
16 <link rel="chapter" href="glib-utilities.html" title="GLib Utilities">
17 <link rel="chapter" href="glib-data-types.html" title="GLib Data Types">
18 <link rel="chapter" href="tools.html" title="GLib Tools">
19 <link rel="index" href="api-index-full.html" title="Index">
20 <link rel="index" href="api-index-deprecated.html" title="Index of deprecated symbols">
21 <link rel="index" href="api-index-2-2.html" title="Index of new symbols in 2.2">
22 <link rel="index" href="api-index-2-4.html" title="Index of new symbols in 2.4">
23 <link rel="index" href="api-index-2-6.html" title="Index of new symbols in 2.6">
24 <link rel="index" href="api-index-2-8.html" title="Index of new symbols in 2.8">
25 <link rel="index" href="api-index-2-10.html" title="Index of new symbols in 2.10">
26 <link rel="index" href="api-index-2-12.html" title="Index of new symbols in 2.12">
27 <link rel="index" href="api-index-2-14.html" title="Index of new symbols in 2.14">
28 <link rel="index" href="api-index-2-16.html" title="Index of new symbols in 2.16">
29 <link rel="index" href="api-index-2-18.html" title="Index of new symbols in 2.18">
30 <link rel="index" href="api-index-2-20.html" title="Index of new symbols in 2.20">
31 <link rel="index" href="api-index-2-22.html" title="Index of new symbols in 2.22">
32 <link rel="index" href="api-index-2-24.html" title="Index of new symbols in 2.24">
33 </head>
34 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
35 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
36 <tr valign="middle">
37 <td><a accesskey="p" href="glib-Base64-Encoding.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
38 <td><a accesskey="u" href="glib-utilities.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
39 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
40 <th width="100%" align="center">GLib Reference Manual</th>
41 <td><a accesskey="n" href="glib-I18N.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
42 </tr>
43 <tr><td colspan="5" class="shortcuts">
44 <a href="#glib-Data-Checksums.synopsis" class="shortcut">Top</a>
45                    | 
46                   <a href="#glib-Data-Checksums.description" class="shortcut">Description</a>
47 </td></tr>
48 </table>
49 <div class="refentry" title="Data Checksums">
50 <a name="glib-Data-Checksums"></a><div class="titlepage"></div>
51 <div class="refnamediv"><table width="100%"><tr>
52 <td valign="top">
53 <h2><span class="refentrytitle"><a name="glib-Data-Checksums.top_of_page"></a>Data Checksums</span></h2>
54 <p>Data Checksums — Computes the checksum for data</p>
55 </td>
56 <td valign="top" align="right"></td>
57 </tr></table></div>
58 <div class="refsynopsisdiv" title="Synopsis">
59 <a name="glib-Data-Checksums.synopsis"></a><h2>Synopsis</h2>
60 <pre class="synopsis">
61 #include &lt;glib.h&gt;
62
63 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-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);
77
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);
84 </pre>
85 </div>
86 <div class="refsect1" title="Description">
87 <a name="glib-Data-Checksums.description"></a><h2>Description</h2>
88 <p>
89 GLib provides a generic API for computing checksums (or "digests")
90 for a sequence of arbitrary bytes, using various hashing algorithms
91 like MD5, SHA-1 and SHA-256. Checksums are commonly used in various
92 environments and specifications.
93 </p>
94 <p>
95 GLib supports incremental checksums using the GChecksum data
96 structure, by calling <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()"><code class="function">g_checksum_update()</code></a> as long as there's data
97 available and then using <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
98 <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> to compute the checksum and return it either
99 as a string in hexadecimal form, or as a raw sequence of bytes. To
100 compute the checksum for binary blobs and NUL-terminated strings in
101 one go, use the convenience functions <a class="link" href="glib-Data-Checksums.html#g-compute-checksum-for-data" title="g_compute_checksum_for_data ()"><code class="function">g_compute_checksum_for_data()</code></a>
102 and <a class="link" href="glib-Data-Checksums.html#g-compute-checksum-for-string" title="g_compute_checksum_for_string ()"><code class="function">g_compute_checksum_for_string()</code></a>, respectively.
103 </p>
104 <p>
105 Support for checksums has been added in GLib 2.16</p>
106 </div>
107 <div class="refsect1" title="Details">
108 <a name="glib-Data-Checksums.details"></a><h2>Details</h2>
109 <div class="refsect2" title="enum GChecksumType">
110 <a name="GChecksumType"></a><h3>enum GChecksumType</h3>
111 <pre class="programlisting">typedef enum {
112   G_CHECKSUM_MD5,
113   G_CHECKSUM_SHA1,
114   G_CHECKSUM_SHA256
115 } GChecksumType;
116 </pre>
117 <p>
118 The hashing algorithm to be used by <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> when performing the
119 digest of some data.
120 </p>
121 <p>
122 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 date to include new hashing algorithm types.</p>
124 <div class="variablelist"><table border="0">
125 <col align="left" valign="top">
126 <tbody>
127 <tr>
128 <td><p><a name="G-CHECKSUM-MD5:CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_MD5</code></span></p></td>
129 <td> Use the MD5 hashing algorithm
130 </td>
131 </tr>
132 <tr>
133 <td><p><a name="G-CHECKSUM-SHA1:CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_SHA1</code></span></p></td>
134 <td> Use the SHA-1 hashing algorithm
135 </td>
136 </tr>
137 <tr>
138 <td><p><a name="G-CHECKSUM-SHA256:CAPS"></a><span class="term"><code class="literal">G_CHECKSUM_SHA256</code></span></p></td>
139 <td> Use the SHA-256 hashing algorithm
140 </td>
141 </tr>
142 </tbody>
143 </table></div>
144 <p class="since">Since 2.16</p>
145 </div>
146 <hr>
147 <div class="refsect2" title="g_checksum_type_get_length ()">
148 <a name="g-checksum-type-get-length"></a><h3>g_checksum_type_get_length ()</h3>
149 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gssize" title="gssize"><span class="returnvalue">gssize</span></a>              g_checksum_type_get_length          (<a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="returnvalue">GChecksumType</span></a> checksum_type);</pre>
150 <p>
151 Gets the length in bytes of digests of type <em class="parameter"><code>checksum_type</code></em></p>
152 <div class="variablelist"><table border="0">
153 <col align="left" valign="top">
154 <tbody>
155 <tr>
156 <td><p><span class="term"><em class="parameter"><code>checksum_type</code></em> :</span></p></td>
157 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="type">GChecksumType</span></a>
158 </td>
159 </tr>
160 <tr>
161 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
162 <td> the checksum length, or -1 if <em class="parameter"><code>checksum_type</code></em> is
163 not supported.
164
165 </td>
166 </tr>
167 </tbody>
168 </table></div>
169 <p class="since">Since 2.16</p>
170 </div>
171 <hr>
172 <div class="refsect2" title="GChecksum">
173 <a name="GChecksum"></a><h3>GChecksum</h3>
174 <pre class="programlisting">typedef struct _GChecksum GChecksum;</pre>
175 <p>
176 An opaque structure representing a checksumming operation.
177 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 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 <p class="since">Since 2.16</p>
180 </div>
181 <hr>
182 <div class="refsect2" title="g_checksum_new ()">
183 <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>
185 <p>
186 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.
188 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 arbitrary binary blob, using different hashing algorithms.
190 </p>
191 <p>
192 A <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> works by feeding a binary blob through <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()"><code class="function">g_checksum_update()</code></a>
193 until there is data to be checked; the digest can then be extracted
194 using <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>, which will return the checksum as a
195 hexadecimal string; 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>, which will return a
196 vector of raw bytes. Once either <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
197 <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> have been called on a <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>, the checksum
198 will be closed and it won't be possible to call <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()"><code class="function">g_checksum_update()</code></a>
199 on it anymore.</p>
200 <div class="variablelist"><table border="0">
201 <col align="left" valign="top">
202 <tbody>
203 <tr>
204 <td><p><span class="term"><em class="parameter"><code>checksum_type</code></em> :</span></p></td>
205 <td> the desired type of checksum
206 </td>
207 </tr>
208 <tr>
209 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
210 <td> the newly created <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>. 
211   Use <a class="link" href="glib-Data-Checksums.html#g-checksum-free" title="g_checksum_free ()"><code class="function">g_checksum_free()</code></a> to free the memory allocated by it.
212
213 </td>
214 </tr>
215 </tbody>
216 </table></div>
217 <p class="since">Since 2.16</p>
218 </div>
219 <hr>
220 <div class="refsect2" title="g_checksum_copy ()">
221 <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>
223 <p>
224 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 <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 checksum will be closed as well.</p>
227 <div class="variablelist"><table border="0">
228 <col align="left" valign="top">
229 <tbody>
230 <tr>
231 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
232 <td> the <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> to copy
233 </td>
234 </tr>
235 <tr>
236 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
237 <td> the copy of the passed <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>. Use <a class="link" href="glib-Data-Checksums.html#g-checksum-free" title="g_checksum_free ()"><code class="function">g_checksum_free()</code></a>
238   when finished using it.
239
240 </td>
241 </tr>
242 </tbody>
243 </table></div>
244 <p class="since">Since 2.16</p>
245 </div>
246 <hr>
247 <div class="refsect2" title="g_checksum_free ()">
248 <a name="g-checksum-free"></a><h3>g_checksum_free ()</h3>
249 <pre class="programlisting"><span class="returnvalue">void</span>                g_checksum_free                     (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);</pre>
250 <p>
251 Frees the memory allocated for <em class="parameter"><code>checksum</code></em>.</p>
252 <div class="variablelist"><table border="0">
253 <col align="left" valign="top">
254 <tbody><tr>
255 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
256 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>
257 </td>
258 </tr></tbody>
259 </table></div>
260 <p class="since">Since 2.16</p>
261 </div>
262 <hr>
263 <div class="refsect2" title="g_checksum_reset ()">
264 <a name="g-checksum-reset"></a><h3>g_checksum_reset ()</h3>
265 <pre class="programlisting"><span class="returnvalue">void</span>                g_checksum_reset                    (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);</pre>
266 <p>
267 Resets the state of the <em class="parameter"><code>checksum</code></em> back to its initial state.</p>
268 <div class="variablelist"><table border="0">
269 <col align="left" valign="top">
270 <tbody><tr>
271 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
272 <td> the <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> to reset
273 </td>
274 </tr></tbody>
275 </table></div>
276 <p class="since">Since 2.18</p>
277 </div>
278 <hr>
279 <div class="refsect2" title="g_checksum_update ()">
280 <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>
284 <p>
285 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 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 not have been called on <em class="parameter"><code>checksum</code></em>.</p>
288 <div class="variablelist"><table border="0">
289 <col align="left" valign="top">
290 <tbody>
291 <tr>
292 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
293 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>
294 </td>
295 </tr>
296 <tr>
297 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
298 <td> buffer used to compute the checksum
299 </td>
300 </tr>
301 <tr>
302 <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
303 <td> size of the buffer, or -1 if it is a null-terminated string.
304 </td>
305 </tr>
306 </tbody>
307 </table></div>
308 <p class="since">Since 2.16</p>
309 </div>
310 <hr>
311 <div class="refsect2" title="g_checksum_get_string ()">
312 <a name="g-checksum-get-string"></a><h3>g_checksum_get_string ()</h3>
313 <pre class="programlisting">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *       g_checksum_get_string               (<a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="returnvalue">GChecksum</span></a> *checksum);</pre>
314 <p>
315 Gets the digest as an hexadecimal string.
316 </p>
317 <p>
318 Once this function has been called the <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> can no longer be
319 updated with <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()"><code class="function">g_checksum_update()</code></a>.
320 </p>
321 <p>
322 The hexadecimal characters will be lower case.</p>
323 <div class="variablelist"><table border="0">
324 <col align="left" valign="top">
325 <tbody>
326 <tr>
327 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
328 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>
329 </td>
330 </tr>
331 <tr>
332 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
333 <td> the hexadecimal representation of the checksum. The
334   returned string is owned by the checksum and should not be modified
335   or freed.
336
337 </td>
338 </tr>
339 </tbody>
340 </table></div>
341 <p class="since">Since 2.16</p>
342 </div>
343 <hr>
344 <div class="refsect2" title="g_checksum_get_digest ()">
345 <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>
349 <p>
350 Gets the digest from <em class="parameter"><code>checksum</code></em> as a raw binary vector and places it
351 into <em class="parameter"><code>buffer</code></em>. The size of the digest depends on the type of checksum.
352 </p>
353 <p>
354 Once this function has been called, the <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a> is closed and can
355 no longer be updated with <a class="link" href="glib-Data-Checksums.html#g-checksum-update" title="g_checksum_update ()"><code class="function">g_checksum_update()</code></a>.</p>
356 <div class="variablelist"><table border="0">
357 <col align="left" valign="top">
358 <tbody>
359 <tr>
360 <td><p><span class="term"><em class="parameter"><code>checksum</code></em> :</span></p></td>
361 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksum" title="GChecksum"><span class="type">GChecksum</span></a>
362 </td>
363 </tr>
364 <tr>
365 <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
366 <td> output buffer
367 </td>
368 </tr>
369 <tr>
370 <td><p><span class="term"><em class="parameter"><code>digest_len</code></em> :</span></p></td>
371 <td> an inout parameter. The caller initializes it to the size of <em class="parameter"><code>buffer</code></em>.
372   After the call it contains the length of the digest.
373 </td>
374 </tr>
375 </tbody>
376 </table></div>
377 <p class="since">Since 2.16</p>
378 </div>
379 <hr>
380 <div class="refsect2" title="g_compute_checksum_for_data ()">
381 <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>
385 <p>
386 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 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>
388 and <a class="link" href="glib-Data-Checksums.html#g-checksum-free" title="g_checksum_free ()"><code class="function">g_checksum_free()</code></a>.
389 </p>
390 <p>
391 The hexadecimal string returned will be in lower case.</p>
392 <div class="variablelist"><table border="0">
393 <col align="left" valign="top">
394 <tbody>
395 <tr>
396 <td><p><span class="term"><em class="parameter"><code>checksum_type</code></em> :</span></p></td>
397 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="type">GChecksumType</span></a>
398 </td>
399 </tr>
400 <tr>
401 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
402 <td> binary blob to compute the digest of
403 </td>
404 </tr>
405 <tr>
406 <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
407 <td> length of <em class="parameter"><code>data</code></em>
408 </td>
409 </tr>
410 <tr>
411 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
412 <td> the digest of the binary data as a string in hexadecimal.
413   The returned string should be freed with <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a> when done using it.
414
415 </td>
416 </tr>
417 </tbody>
418 </table></div>
419 <p class="since">Since 2.16</p>
420 </div>
421 <hr>
422 <div class="refsect2" title="g_compute_checksum_for_string ()">
423 <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>
427 <p>
428 Computes the checksum of a string.
429 </p>
430 <p>
431 The hexadecimal string returned will be in lower case.</p>
432 <div class="variablelist"><table border="0">
433 <col align="left" valign="top">
434 <tbody>
435 <tr>
436 <td><p><span class="term"><em class="parameter"><code>checksum_type</code></em> :</span></p></td>
437 <td> a <a class="link" href="glib-Data-Checksums.html#GChecksumType" title="enum GChecksumType"><span class="type">GChecksumType</span></a>
438 </td>
439 </tr>
440 <tr>
441 <td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
442 <td> the string to compute the checksum of
443 </td>
444 </tr>
445 <tr>
446 <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
447 <td> the length of the string, or -1 if the string is null-terminated.
448 </td>
449 </tr>
450 <tr>
451 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
452 <td> the checksum as a hexadecimal string. The returned string
453   should be freed with <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a> when done using it.
454
455 </td>
456 </tr>
457 </tbody>
458 </table></div>
459 <p class="since">Since 2.16</p>
460 </div>
461 </div>
462 </div>
463 <div class="footer">
464 <hr>
465           Generated by GTK-Doc V1.13</div>
466 </body>
467 </html>