Sophie

Sophie

distrib > Mageia > 6 > x86_64 > by-pkgid > f835bee5b8b7ec08e20fae17cab51e63 > files > 291

lib64mbedtls-devel-2.7.3-1.mga6.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mbed TLS v2.7.3: gcm.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">mbed TLS v2.7.3
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_b4d146e9a6d8dd56ed4afb2480a97fd3.html">mbedtls</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">gcm.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Galois/Counter Mode (GCM) for 128-bit block ciphers, as defined in <em>D. McGrew, J. Viega, The Galois/Counter Mode of Operation (GCM), Natl. Inst. Stand. Technol.</em>  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="cipher_8h_source.html">cipher.h</a>&quot;</code><br />
<code>#include &lt;stdint.h&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for gcm.h:</div>
<div class="dyncontent">
<div class="center"><img src="gcm_8h__incl.png" border="0" usemap="#gcm_8h" alt=""/></div>
<map name="gcm_8h" id="gcm_8h">
</map>
</div>
</div>
<p><a href="gcm_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The GCM context structure.  <a href="structmbedtls__gcm__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a023326dceb6d25c6d0c8a383f8748e86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a023326dceb6d25c6d0c8a383f8748e86">MBEDTLS_GCM_ENCRYPT</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a023326dceb6d25c6d0c8a383f8748e86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a792b42066d6fac0a85d547f5c9c5636a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a792b42066d6fac0a85d547f5c9c5636a">MBEDTLS_GCM_DECRYPT</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a792b42066d6fac0a85d547f5c9c5636a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ed179bbaac5f312fb1235d33db3f6c4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a4ed179bbaac5f312fb1235d33db3f6c4">MBEDTLS_ERR_GCM_AUTH_FAILED</a>&#160;&#160;&#160;-0x0012</td></tr>
<tr class="separator:a4ed179bbaac5f312fb1235d33db3f6c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75cad431fcb968f799f6aec5ebdbdc7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a75cad431fcb968f799f6aec5ebdbdc7f">MBEDTLS_ERR_GCM_HW_ACCEL_FAILED</a>&#160;&#160;&#160;-0x0013</td></tr>
<tr class="separator:a75cad431fcb968f799f6aec5ebdbdc7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77153ba10a2c9d428bdb1fb02076429e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a77153ba10a2c9d428bdb1fb02076429e">MBEDTLS_ERR_GCM_BAD_INPUT</a>&#160;&#160;&#160;-0x0014</td></tr>
<tr class="separator:a77153ba10a2c9d428bdb1fb02076429e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac3f60a663c6b01ef6d977ac06aac57df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#ac3f60a663c6b01ef6d977ac06aac57df">mbedtls_gcm_init</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx)</td></tr>
<tr class="memdesc:ac3f60a663c6b01ef6d977ac06aac57df"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function initializes the specified GCM context, to make references valid, and prepares the context for <a class="el" href="gcm_8h.html#ae87d2c58882a11976fdc6a30f6f0ae6f" title="This function associates a GCM context with a cipher algorithm and a key. ">mbedtls_gcm_setkey()</a> or <a class="el" href="gcm_8h.html#af09c2638d0ff09880517231df34d346f" title="This function clears a GCM context and the underlying cipher sub-context. ">mbedtls_gcm_free()</a>.  <a href="#ac3f60a663c6b01ef6d977ac06aac57df">More...</a><br /></td></tr>
<tr class="separator:ac3f60a663c6b01ef6d977ac06aac57df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae87d2c58882a11976fdc6a30f6f0ae6f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#ae87d2c58882a11976fdc6a30f6f0ae6f">mbedtls_gcm_setkey</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx, <a class="el" href="cipher_8h.html#af5b069ffd0b2ad31225e42ee4ee29b1b">mbedtls_cipher_id_t</a> cipher, const unsigned char *key, unsigned int keybits)</td></tr>
<tr class="memdesc:ae87d2c58882a11976fdc6a30f6f0ae6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function associates a GCM context with a cipher algorithm and a key.  <a href="#ae87d2c58882a11976fdc6a30f6f0ae6f">More...</a><br /></td></tr>
<tr class="separator:ae87d2c58882a11976fdc6a30f6f0ae6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ad456f90f60211f72005dc815b808b5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a3ad456f90f60211f72005dc815b808b5">mbedtls_gcm_crypt_and_tag</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx, int mode, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, size_t tag_len, unsigned char *tag)</td></tr>
<tr class="memdesc:a3ad456f90f60211f72005dc815b808b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs GCM encryption or decryption of a buffer.  <a href="#a3ad456f90f60211f72005dc815b808b5">More...</a><br /></td></tr>
<tr class="separator:a3ad456f90f60211f72005dc815b808b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af264b64b26c4720188b530cfccddb4ef"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#af264b64b26c4720188b530cfccddb4ef">mbedtls_gcm_auth_decrypt</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *tag, size_t tag_len, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:af264b64b26c4720188b530cfccddb4ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a GCM authenticated decryption of a buffer.  <a href="#af264b64b26c4720188b530cfccddb4ef">More...</a><br /></td></tr>
<tr class="separator:af264b64b26c4720188b530cfccddb4ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fc3a11f761e37d515e013d8c8f8975f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a1fc3a11f761e37d515e013d8c8f8975f">mbedtls_gcm_starts</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx, int mode, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len)</td></tr>
<tr class="memdesc:a1fc3a11f761e37d515e013d8c8f8975f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function starts a GCM encryption or decryption operation.  <a href="#a1fc3a11f761e37d515e013d8c8f8975f">More...</a><br /></td></tr>
<tr class="separator:a1fc3a11f761e37d515e013d8c8f8975f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a922addfa5c93fa08b6e9da134d5d8f2d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a922addfa5c93fa08b6e9da134d5d8f2d">mbedtls_gcm_update</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx, size_t length, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:a922addfa5c93fa08b6e9da134d5d8f2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function feeds an input buffer into an ongoing GCM encryption or decryption operation.  <a href="#a922addfa5c93fa08b6e9da134d5d8f2d">More...</a><br /></td></tr>
<tr class="separator:a922addfa5c93fa08b6e9da134d5d8f2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b6fb653c3085e063c9558eb4a05fc4d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#a3b6fb653c3085e063c9558eb4a05fc4d">mbedtls_gcm_finish</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx, unsigned char *tag, size_t tag_len)</td></tr>
<tr class="memdesc:a3b6fb653c3085e063c9558eb4a05fc4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function finishes the GCM operation and generates the authentication tag.  <a href="#a3b6fb653c3085e063c9558eb4a05fc4d">More...</a><br /></td></tr>
<tr class="separator:a3b6fb653c3085e063c9558eb4a05fc4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af09c2638d0ff09880517231df34d346f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#af09c2638d0ff09880517231df34d346f">mbedtls_gcm_free</a> (<a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *ctx)</td></tr>
<tr class="memdesc:af09c2638d0ff09880517231df34d346f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function clears a GCM context and the underlying cipher sub-context.  <a href="#af09c2638d0ff09880517231df34d346f">More...</a><br /></td></tr>
<tr class="separator:af09c2638d0ff09880517231df34d346f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af08f4690bdc542d366494d13422fa7a3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gcm_8h.html#af08f4690bdc542d366494d13422fa7a3">mbedtls_gcm_self_test</a> (int verbose)</td></tr>
<tr class="memdesc:af08f4690bdc542d366494d13422fa7a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The GCM checkup routine.  <a href="#af08f4690bdc542d366494d13422fa7a3">More...</a><br /></td></tr>
<tr class="separator:af08f4690bdc542d366494d13422fa7a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Galois/Counter Mode (GCM) for 128-bit block ciphers, as defined in <em>D. McGrew, J. Viega, The Galois/Counter Mode of Operation (GCM), Natl. Inst. Stand. Technol.</em> </p>
<p>For more information on GCM, see <em>NIST SP 800-38D: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC</em>. </p>

<p class="definition">Definition in file <a class="el" href="gcm_8h_source.html">gcm.h</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a4ed179bbaac5f312fb1235d33db3f6c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ed179bbaac5f312fb1235d33db3f6c4">&#9670;&nbsp;</a></span>MBEDTLS_ERR_GCM_AUTH_FAILED</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_GCM_AUTH_FAILED&#160;&#160;&#160;-0x0012</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Authenticated decryption failed. </p>

<p class="definition">Definition at line <a class="el" href="gcm_8h_source.html#l00041">41</a> of file <a class="el" href="gcm_8h_source.html">gcm.h</a>.</p>

</div>
</div>
<a id="a77153ba10a2c9d428bdb1fb02076429e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77153ba10a2c9d428bdb1fb02076429e">&#9670;&nbsp;</a></span>MBEDTLS_ERR_GCM_BAD_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_GCM_BAD_INPUT&#160;&#160;&#160;-0x0014</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Bad input parameters to function. </p>

<p class="definition">Definition at line <a class="el" href="gcm_8h_source.html#l00043">43</a> of file <a class="el" href="gcm_8h_source.html">gcm.h</a>.</p>

</div>
</div>
<a id="a75cad431fcb968f799f6aec5ebdbdc7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75cad431fcb968f799f6aec5ebdbdc7f">&#9670;&nbsp;</a></span>MBEDTLS_ERR_GCM_HW_ACCEL_FAILED</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_GCM_HW_ACCEL_FAILED&#160;&#160;&#160;-0x0013</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>GCM hardware accelerator failed. </p>

<p class="definition">Definition at line <a class="el" href="gcm_8h_source.html#l00042">42</a> of file <a class="el" href="gcm_8h_source.html">gcm.h</a>.</p>

</div>
</div>
<a id="a792b42066d6fac0a85d547f5c9c5636a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a792b42066d6fac0a85d547f5c9c5636a">&#9670;&nbsp;</a></span>MBEDTLS_GCM_DECRYPT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_GCM_DECRYPT&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="gcm_8h_source.html#l00039">39</a> of file <a class="el" href="gcm_8h_source.html">gcm.h</a>.</p>

</div>
</div>
<a id="a023326dceb6d25c6d0c8a383f8748e86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a023326dceb6d25c6d0c8a383f8748e86">&#9670;&nbsp;</a></span>MBEDTLS_GCM_ENCRYPT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_GCM_ENCRYPT&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="gcm_8h_source.html#l00038">38</a> of file <a class="el" href="gcm_8h_source.html">gcm.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="af264b64b26c4720188b530cfccddb4ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af264b64b26c4720188b530cfccddb4ef">&#9670;&nbsp;</a></span>mbedtls_gcm_auth_decrypt()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_auth_decrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>iv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iv_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>add</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>add_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>tag_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>output</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a GCM authenticated decryption of a buffer. </p>
<dl class="section note"><dt>Note</dt><dd>For decryption, the output buffer cannot be the same as input buffer. If the buffers overlap, the output buffer must trail at least 8 Bytes behind the input buffer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context. </td></tr>
    <tr><td class="paramname">length</td><td>The length of the input data. This must be a multiple of 16 except in the last call before <a class="el" href="gcm_8h.html#a3b6fb653c3085e063c9558eb4a05fc4d" title="This function finishes the GCM operation and generates the authentication tag. ">mbedtls_gcm_finish()</a>. </td></tr>
    <tr><td class="paramname">iv</td><td>The initialization vector. </td></tr>
    <tr><td class="paramname">iv_len</td><td>The length of the IV. </td></tr>
    <tr><td class="paramname">add</td><td>The buffer holding the additional data. </td></tr>
    <tr><td class="paramname">add_len</td><td>The length of the additional data. </td></tr>
    <tr><td class="paramname">tag</td><td>The buffer holding the tag. </td></tr>
    <tr><td class="paramname">tag_len</td><td>The length of the tag. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the input data. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer for holding the output data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful and authenticated, or <a class="el" href="gcm_8h.html#a4ed179bbaac5f312fb1235d33db3f6c4">MBEDTLS_ERR_GCM_AUTH_FAILED</a> if tag does not match. </dd></dl>

</div>
</div>
<a id="a3ad456f90f60211f72005dc815b808b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ad456f90f60211f72005dc815b808b5">&#9670;&nbsp;</a></span>mbedtls_gcm_crypt_and_tag()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_crypt_and_tag </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>iv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iv_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>add</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>add_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>output</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>tag_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>tag</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs GCM encryption or decryption of a buffer. </p>
<dl class="section note"><dt>Note</dt><dd>For encryption, the output buffer can be the same as the input buffer. For decryption, the output buffer cannot be the same as input buffer. If the buffers overlap, the output buffer must trail at least 8 Bytes behind the input buffer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context to use for encryption or decryption. </td></tr>
    <tr><td class="paramname">mode</td><td>The operation to perform: <a class="el" href="gcm_8h.html#a023326dceb6d25c6d0c8a383f8748e86">MBEDTLS_GCM_ENCRYPT</a> or <a class="el" href="gcm_8h.html#a792b42066d6fac0a85d547f5c9c5636a">MBEDTLS_GCM_DECRYPT</a>. </td></tr>
    <tr><td class="paramname">length</td><td>The length of the input data. This must be a multiple of 16 except in the last call before <a class="el" href="gcm_8h.html#a3b6fb653c3085e063c9558eb4a05fc4d" title="This function finishes the GCM operation and generates the authentication tag. ">mbedtls_gcm_finish()</a>. </td></tr>
    <tr><td class="paramname">iv</td><td>The initialization vector. </td></tr>
    <tr><td class="paramname">iv_len</td><td>The length of the IV. </td></tr>
    <tr><td class="paramname">add</td><td>The buffer holding the additional data. </td></tr>
    <tr><td class="paramname">add_len</td><td>The length of the additional data. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the input data. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer for holding the output data. </td></tr>
    <tr><td class="paramname">tag_len</td><td>The length of the tag to generate. </td></tr>
    <tr><td class="paramname">tag</td><td>The buffer for holding the tag.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success. </dd></dl>

</div>
</div>
<a id="a3b6fb653c3085e063c9558eb4a05fc4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b6fb653c3085e063c9558eb4a05fc4d">&#9670;&nbsp;</a></span>mbedtls_gcm_finish()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_finish </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>tag_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function finishes the GCM operation and generates the authentication tag. </p>
<p>It wraps up the GCM stream, and generates the tag. The tag can have a maximum length of 16 Bytes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context. </td></tr>
    <tr><td class="paramname">tag</td><td>The buffer for holding the tag. </td></tr>
    <tr><td class="paramname">tag_len</td><td>The length of the tag to generate. Must be at least four.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or <a class="el" href="gcm_8h.html#a77153ba10a2c9d428bdb1fb02076429e">MBEDTLS_ERR_GCM_BAD_INPUT</a> on failure. </dd></dl>

</div>
</div>
<a id="af09c2638d0ff09880517231df34d346f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af09c2638d0ff09880517231df34d346f">&#9670;&nbsp;</a></span>mbedtls_gcm_free()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mbedtls_gcm_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function clears a GCM context and the underlying cipher sub-context. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context to clear. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ac3f60a663c6b01ef6d977ac06aac57df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3f60a663c6b01ef6d977ac06aac57df">&#9670;&nbsp;</a></span>mbedtls_gcm_init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mbedtls_gcm_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function initializes the specified GCM context, to make references valid, and prepares the context for <a class="el" href="gcm_8h.html#ae87d2c58882a11976fdc6a30f6f0ae6f" title="This function associates a GCM context with a cipher algorithm and a key. ">mbedtls_gcm_setkey()</a> or <a class="el" href="gcm_8h.html#af09c2638d0ff09880517231df34d346f" title="This function clears a GCM context and the underlying cipher sub-context. ">mbedtls_gcm_free()</a>. </p>
<p>The function does not bind the GCM context to a particular cipher, nor set the key. For this purpose, use <a class="el" href="gcm_8h.html#ae87d2c58882a11976fdc6a30f6f0ae6f" title="This function associates a GCM context with a cipher algorithm and a key. ">mbedtls_gcm_setkey()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context to initialize. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="af08f4690bdc542d366494d13422fa7a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af08f4690bdc542d366494d13422fa7a3">&#9670;&nbsp;</a></span>mbedtls_gcm_self_test()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_self_test </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>verbose</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The GCM checkup routine. </p>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or <code>1</code> on failure. </dd></dl>

</div>
</div>
<a id="ae87d2c58882a11976fdc6a30f6f0ae6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae87d2c58882a11976fdc6a30f6f0ae6f">&#9670;&nbsp;</a></span>mbedtls_gcm_setkey()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_setkey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="cipher_8h.html#af5b069ffd0b2ad31225e42ee4ee29b1b">mbedtls_cipher_id_t</a>&#160;</td>
          <td class="paramname"><em>cipher</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>keybits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function associates a GCM context with a cipher algorithm and a key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context to initialize. </td></tr>
    <tr><td class="paramname">cipher</td><td>The 128-bit block cipher to use. </td></tr>
    <tr><td class="paramname">key</td><td>The encryption key. </td></tr>
    <tr><td class="paramname">keybits</td><td>The key size in bits. Valid options are: <ul>
<li>
128 bits </li>
<li>
192 bits </li>
<li>
256 bits</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or a cipher specific error code. </dd></dl>

</div>
</div>
<a id="a1fc3a11f761e37d515e013d8c8f8975f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fc3a11f761e37d515e013d8c8f8975f">&#9670;&nbsp;</a></span>mbedtls_gcm_starts()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_starts </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>iv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iv_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>add</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>add_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function starts a GCM encryption or decryption operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context. </td></tr>
    <tr><td class="paramname">mode</td><td>The operation to perform: <a class="el" href="gcm_8h.html#a023326dceb6d25c6d0c8a383f8748e86">MBEDTLS_GCM_ENCRYPT</a> or <a class="el" href="gcm_8h.html#a792b42066d6fac0a85d547f5c9c5636a">MBEDTLS_GCM_DECRYPT</a>. </td></tr>
    <tr><td class="paramname">iv</td><td>The initialization vector. </td></tr>
    <tr><td class="paramname">iv_len</td><td>The length of the IV. </td></tr>
    <tr><td class="paramname">add</td><td>The buffer holding the additional data, or NULL if <code>add_len</code> is 0. </td></tr>
    <tr><td class="paramname">add_len</td><td>The length of the additional data. If 0, <code>add</code> is NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success. </dd></dl>

</div>
</div>
<a id="a922addfa5c93fa08b6e9da134d5d8f2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a922addfa5c93fa08b6e9da134d5d8f2d">&#9670;&nbsp;</a></span>mbedtls_gcm_update()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_gcm_update </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__gcm__context.html">mbedtls_gcm_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>output</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function feeds an input buffer into an ongoing GCM encryption or decryption operation. </p>
<p>` The function expects input to be a multiple of 16 Bytes. Only the last call before calling <a class="el" href="gcm_8h.html#a3b6fb653c3085e063c9558eb4a05fc4d" title="This function finishes the GCM operation and generates the authentication tag. ">mbedtls_gcm_finish()</a> can be less than 16 Bytes.</p>
<dl class="section note"><dt>Note</dt><dd>For decryption, the output buffer cannot be the same as input buffer. If the buffers overlap, the output buffer must trail at least 8 Bytes behind the input buffer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The GCM context. </td></tr>
    <tr><td class="paramname">length</td><td>The length of the input data. This must be a multiple of 16 except in the last call before <a class="el" href="gcm_8h.html#a3b6fb653c3085e063c9558eb4a05fc4d" title="This function finishes the GCM operation and generates the authentication tag. ">mbedtls_gcm_finish()</a>. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the input data. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer for holding the output data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or <a class="el" href="gcm_8h.html#a77153ba10a2c9d428bdb1fb02076429e">MBEDTLS_ERR_GCM_BAD_INPUT</a> on failure. </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue May 8 2018 21:08:41 for mbed TLS v2.7.3 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>