/usr/share/doc/libgcrypt11-doc/html/Hashing-and-MACing-Subsystem-Architecture.html is in libgcrypt11-doc 1.5.3-2ubuntu4.
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 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for Libgcrypt
(version 1.5.3, 17 December 2013),
which is GNU's library of cryptographic building blocks.
Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. The text of the license can be found in the
section entitled "GNU General Public License". -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>The Libgcrypt Reference Manual: Hashing and MACing Subsystem Architecture</title>
<meta name="description" content="The Libgcrypt Reference Manual: Hashing and MACing Subsystem Architecture">
<meta name="keywords" content="The Libgcrypt Reference Manual: Hashing and MACing Subsystem Architecture">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Architecture.html#Architecture" rel="up" title="Architecture">
<link href="Multi_002dPrecision_002dInteger-Subsystem-Architecture.html#Multi_002dPrecision_002dInteger-Subsystem-Architecture" rel="next" title="Multi-Precision-Integer Subsystem Architecture">
<link href="Symmetric-Encryption-Subsystem-Architecture.html#Symmetric-Encryption-Subsystem-Architecture" rel="prev" title="Symmetric Encryption Subsystem Architecture">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Hashing-and-MACing-Subsystem-Architecture"></a>
<div class="header">
<p>
Next: <a href="Multi_002dPrecision_002dInteger-Subsystem-Architecture.html#Multi_002dPrecision_002dInteger-Subsystem-Architecture" accesskey="n" rel="next">Multi-Precision-Integer Subsystem Architecture</a>, Previous: <a href="Symmetric-Encryption-Subsystem-Architecture.html#Symmetric-Encryption-Subsystem-Architecture" accesskey="p" rel="prev">Symmetric Encryption Subsystem Architecture</a>, Up: <a href="Architecture.html#Architecture" accesskey="u" rel="up">Architecture</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Hashing-and-MACing-Subsystem-Architecture-1"></a>
<h3 class="section">14.3 Hashing and MACing Subsystem Architecture</h3>
<p>The interface to work with message digests and CRC algorithms is made
up of functions from the <code>gcry_md_</code> name space. The
implementation follows the open-use-close paradigm and uses registered
algorithm modules for the actual work. Although CRC algorithms are
not considered cryptographic hash algorithms, they share enough
properties so that it makes sense to handle them in the same way.
It is possible to use several algorithms at once with one context and
thus compute them all on the same data.
</p>
<p>The most important functions are:
</p>
<dl compact="compact">
<dt><code>gcry_md_open</code></dt>
<dd><p>Create a new message digest instance and optionally enable one
algorithm. A flag may be used to turn the message digest algorithm
into a HMAC algorithm.
</p>
</dd>
<dt><code>gcry_md_enable</code></dt>
<dd><p>Enable an additional algorithm for the instance.
</p>
</dd>
<dt><code>gcry_md_setkey</code></dt>
<dd><p>Set the key for the MAC.
</p>
</dd>
<dt><code>gcry_md_write</code></dt>
<dd><p>Pass more data for computing the message digest to an instance.
</p>
</dd>
<dt><code>gcry_md_putc</code></dt>
<dd><p>Buffered version of <code>gcry_md_write</code> implemented as a macro.
</p>
</dd>
<dt><code>gcry_md_read</code></dt>
<dd><p>Finalize the computation of the message digest or HMAC and return the
result.
</p>
</dd>
<dt><code>gcry_md_close</code></dt>
<dd><p>Release an instance
</p>
</dd>
<dt><code>gcry_md_hash_buffer</code></dt>
<dd><p>Convenience function to directly compute a message digest over a
memory buffer without the need to create an instance first.
</p>
</dd>
</dl>
<p>There are also functions to query properties of algorithms or the
instance, like enabled algorithms, digest length, map algorithm names.
it is also possible to reset an instance or to copy the current state
of an instance at any time. Debug functions to write the hashed data
to files are available as well.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Multi_002dPrecision_002dInteger-Subsystem-Architecture.html#Multi_002dPrecision_002dInteger-Subsystem-Architecture" accesskey="n" rel="next">Multi-Precision-Integer Subsystem Architecture</a>, Previous: <a href="Symmetric-Encryption-Subsystem-Architecture.html#Symmetric-Encryption-Subsystem-Architecture" accesskey="p" rel="prev">Symmetric Encryption Subsystem Architecture</a>, Up: <a href="Architecture.html#Architecture" accesskey="u" rel="up">Architecture</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|