Sophie

Sophie

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

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: rsa.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">rsa.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>The RSA public-key cryptosystem.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="config_8h_source.html">config.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="bignum_8h_source.html">bignum.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="md_8h_source.html">md.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="threading_8h_source.html">threading.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for rsa.h:</div>
<div class="dyncontent">
<div class="center"><img src="rsa_8h__incl.png" border="0" usemap="#rsa_8h" alt=""/></div>
<map name="rsa_8h" id="rsa_8h">
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="rsa_8h__dep__incl.png" border="0" usemap="#rsa_8hdep" alt=""/></div>
<map name="rsa_8hdep" id="rsa_8hdep">
</map>
</div>
</div>
<p><a href="rsa_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__rsa__context.html">mbedtls_rsa_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The RSA context structure.  <a href="structmbedtls__rsa__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:abf2997e01281b898fd4594af0b7bfbb4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#abf2997e01281b898fd4594af0b7bfbb4">MBEDTLS_ERR_RSA_BAD_INPUT_DATA</a>&#160;&#160;&#160;-0x4080</td></tr>
<tr class="separator:abf2997e01281b898fd4594af0b7bfbb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add099b8887e9e2942fcc3bf1673f703d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#add099b8887e9e2942fcc3bf1673f703d">MBEDTLS_ERR_RSA_INVALID_PADDING</a>&#160;&#160;&#160;-0x4100</td></tr>
<tr class="separator:add099b8887e9e2942fcc3bf1673f703d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae334d56985d569186f5b5bb462cd6af2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ae334d56985d569186f5b5bb462cd6af2">MBEDTLS_ERR_RSA_KEY_GEN_FAILED</a>&#160;&#160;&#160;-0x4180</td></tr>
<tr class="separator:ae334d56985d569186f5b5bb462cd6af2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75113c3b54138090c45a973b864200ad"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a75113c3b54138090c45a973b864200ad">MBEDTLS_ERR_RSA_KEY_CHECK_FAILED</a>&#160;&#160;&#160;-0x4200</td></tr>
<tr class="separator:a75113c3b54138090c45a973b864200ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9bffdb461c7e5803b4081ddd745afb5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ae9bffdb461c7e5803b4081ddd745afb5">MBEDTLS_ERR_RSA_PUBLIC_FAILED</a>&#160;&#160;&#160;-0x4280</td></tr>
<tr class="separator:ae9bffdb461c7e5803b4081ddd745afb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7ddb312b48f8cd135150fc9bbb791d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#af7ddb312b48f8cd135150fc9bbb791d0">MBEDTLS_ERR_RSA_PRIVATE_FAILED</a>&#160;&#160;&#160;-0x4300</td></tr>
<tr class="separator:af7ddb312b48f8cd135150fc9bbb791d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a334c537fbd9e49eb37a2ff12a11392cd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a334c537fbd9e49eb37a2ff12a11392cd">MBEDTLS_ERR_RSA_VERIFY_FAILED</a>&#160;&#160;&#160;-0x4380</td></tr>
<tr class="separator:a334c537fbd9e49eb37a2ff12a11392cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d3d26a305009e5b26957e21b6b151c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a2d3d26a305009e5b26957e21b6b151c9">MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE</a>&#160;&#160;&#160;-0x4400</td></tr>
<tr class="separator:a2d3d26a305009e5b26957e21b6b151c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa8ac62f7c3079cba7da3250a2fb7af"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a6aa8ac62f7c3079cba7da3250a2fb7af">MBEDTLS_ERR_RSA_RNG_FAILED</a>&#160;&#160;&#160;-0x4480</td></tr>
<tr class="separator:a6aa8ac62f7c3079cba7da3250a2fb7af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4708057ba1fead5aa372d0dc7254083"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>&#160;&#160;&#160;-0x4500</td></tr>
<tr class="separator:ae4708057ba1fead5aa372d0dc7254083"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54ec38985190cb750c0605543f3d53db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a54ec38985190cb750c0605543f3d53db">MBEDTLS_ERR_RSA_HW_ACCEL_FAILED</a>&#160;&#160;&#160;-0x4580</td></tr>
<tr class="separator:a54ec38985190cb750c0605543f3d53db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a9033343f995250ee30844b0defa3e9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a0a9033343f995250ee30844b0defa3e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a031a66acf0364a48a80827dd8713874d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a031a66acf0364a48a80827dd8713874d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a426a0d77233000f50dcce6f27d5ddd05"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a426a0d77233000f50dcce6f27d5ddd05">MBEDTLS_RSA_PKCS_V15</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a426a0d77233000f50dcce6f27d5ddd05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a903f0c378a6303efdbc1f53b18603bb1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a903f0c378a6303efdbc1f53b18603bb1">MBEDTLS_RSA_PKCS_V21</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a903f0c378a6303efdbc1f53b18603bb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2115255ea768cf9cef953f48ab24f53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ab2115255ea768cf9cef953f48ab24f53">MBEDTLS_RSA_SIGN</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ab2115255ea768cf9cef953f48ab24f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4bc17285be7e6ae4ccba4747de4ef76"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ad4bc17285be7e6ae4ccba4747de4ef76">MBEDTLS_RSA_CRYPT</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ad4bc17285be7e6ae4ccba4747de4ef76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7aa2f548235465c0f384a13617f184f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ab7aa2f548235465c0f384a13617f184f">MBEDTLS_RSA_SALT_LEN_ANY</a>&#160;&#160;&#160;-1</td></tr>
<tr class="separator:ab7aa2f548235465c0f384a13617f184f"><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:a15b13ee0d1e7d6fd10f07571cc4ff9de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a15b13ee0d1e7d6fd10f07571cc4ff9de">mbedtls_rsa_init</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int padding, int hash_id)</td></tr>
<tr class="memdesc:a15b13ee0d1e7d6fd10f07571cc4ff9de"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function initializes an RSA context.  <a href="#a15b13ee0d1e7d6fd10f07571cc4ff9de">More...</a><br /></td></tr>
<tr class="separator:a15b13ee0d1e7d6fd10f07571cc4ff9de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2faa555349886b5c25923f27c23c3011"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a2faa555349886b5c25923f27c23c3011">mbedtls_rsa_import</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *N, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *P, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *Q, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *D, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *E)</td></tr>
<tr class="memdesc:a2faa555349886b5c25923f27c23c3011"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function imports a set of core parameters into an RSA context.  <a href="#a2faa555349886b5c25923f27c23c3011">More...</a><br /></td></tr>
<tr class="separator:a2faa555349886b5c25923f27c23c3011"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cbe89ebf7cab79bddb35459c56a3657"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a3cbe89ebf7cab79bddb35459c56a3657">mbedtls_rsa_import_raw</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, unsigned char const *N, size_t N_len, unsigned char const *P, size_t P_len, unsigned char const *Q, size_t Q_len, unsigned char const *D, size_t D_len, unsigned char const *E, size_t E_len)</td></tr>
<tr class="memdesc:a3cbe89ebf7cab79bddb35459c56a3657"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function imports core RSA parameters, in raw big-endian binary format, into an RSA context.  <a href="#a3cbe89ebf7cab79bddb35459c56a3657">More...</a><br /></td></tr>
<tr class="separator:a3cbe89ebf7cab79bddb35459c56a3657"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09e4d51afc792bbb2ff9f4b411ab9158"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a09e4d51afc792bbb2ff9f4b411ab9158">mbedtls_rsa_complete</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx)</td></tr>
<tr class="memdesc:a09e4d51afc792bbb2ff9f4b411ab9158"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function completes an RSA context from a set of imported core parameters.  <a href="#a09e4d51afc792bbb2ff9f4b411ab9158">More...</a><br /></td></tr>
<tr class="separator:a09e4d51afc792bbb2ff9f4b411ab9158"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67851948911cfb0c7923f7eb274eebd7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a67851948911cfb0c7923f7eb274eebd7">mbedtls_rsa_export</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *N, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *P, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *Q, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *D, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *E)</td></tr>
<tr class="memdesc:a67851948911cfb0c7923f7eb274eebd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function exports the core parameters of an RSA key.  <a href="#a67851948911cfb0c7923f7eb274eebd7">More...</a><br /></td></tr>
<tr class="separator:a67851948911cfb0c7923f7eb274eebd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6888c6cbbf68a4dee39bd516d1edbcf8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a6888c6cbbf68a4dee39bd516d1edbcf8">mbedtls_rsa_export_raw</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, unsigned char *N, size_t N_len, unsigned char *P, size_t P_len, unsigned char *Q, size_t Q_len, unsigned char *D, size_t D_len, unsigned char *E, size_t E_len)</td></tr>
<tr class="memdesc:a6888c6cbbf68a4dee39bd516d1edbcf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function exports core parameters of an RSA key in raw big-endian binary format.  <a href="#a6888c6cbbf68a4dee39bd516d1edbcf8">More...</a><br /></td></tr>
<tr class="separator:a6888c6cbbf68a4dee39bd516d1edbcf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93d68199c0747dabb345ef46b33f8952"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a93d68199c0747dabb345ef46b33f8952">mbedtls_rsa_export_crt</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *DP, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *DQ, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *QP)</td></tr>
<tr class="memdesc:a93d68199c0747dabb345ef46b33f8952"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function exports CRT parameters of a private RSA key.  <a href="#a93d68199c0747dabb345ef46b33f8952">More...</a><br /></td></tr>
<tr class="separator:a93d68199c0747dabb345ef46b33f8952"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad92c3d026f78e8cac7bac4bf94dc0562"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ad92c3d026f78e8cac7bac4bf94dc0562">mbedtls_rsa_set_padding</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int padding, int hash_id)</td></tr>
<tr class="memdesc:ad92c3d026f78e8cac7bac4bf94dc0562"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function sets padding for an already initialized RSA context. See <a class="el" href="rsa_8h.html#a15b13ee0d1e7d6fd10f07571cc4ff9de" title="This function initializes an RSA context. ">mbedtls_rsa_init()</a> for details.  <a href="#ad92c3d026f78e8cac7bac4bf94dc0562">More...</a><br /></td></tr>
<tr class="separator:ad92c3d026f78e8cac7bac4bf94dc0562"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d0b602b390e2349d420454f964ee430"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a4d0b602b390e2349d420454f964ee430">mbedtls_rsa_get_len</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx)</td></tr>
<tr class="memdesc:a4d0b602b390e2349d420454f964ee430"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function retrieves the length of RSA modulus in Bytes.  <a href="#a4d0b602b390e2349d420454f964ee430">More...</a><br /></td></tr>
<tr class="separator:a4d0b602b390e2349d420454f964ee430"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a421fc8812e75698e33887aafacb0c829"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a421fc8812e75698e33887aafacb0c829">mbedtls_rsa_gen_key</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, unsigned int nbits, int exponent)</td></tr>
<tr class="memdesc:a421fc8812e75698e33887aafacb0c829"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates an RSA keypair.  <a href="#a421fc8812e75698e33887aafacb0c829">More...</a><br /></td></tr>
<tr class="separator:a421fc8812e75698e33887aafacb0c829"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5da263d80db9ee27f084b68b0092546"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ad5da263d80db9ee27f084b68b0092546">mbedtls_rsa_check_pubkey</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx)</td></tr>
<tr class="memdesc:ad5da263d80db9ee27f084b68b0092546"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function checks if a context contains at least an RSA public key.  <a href="#ad5da263d80db9ee27f084b68b0092546">More...</a><br /></td></tr>
<tr class="separator:ad5da263d80db9ee27f084b68b0092546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab393f7a4d3882ac0b2afa51b641bf475"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ab393f7a4d3882ac0b2afa51b641bf475">mbedtls_rsa_check_privkey</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx)</td></tr>
<tr class="memdesc:ab393f7a4d3882ac0b2afa51b641bf475"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function checks if a context contains an RSA private key and perform basic consistency checks.  <a href="#ab393f7a4d3882ac0b2afa51b641bf475">More...</a><br /></td></tr>
<tr class="separator:ab393f7a4d3882ac0b2afa51b641bf475"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3204b1f8a0dafb33b4ccc16570a40999"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a3204b1f8a0dafb33b4ccc16570a40999">mbedtls_rsa_check_pub_priv</a> (const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *pub, const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *prv)</td></tr>
<tr class="memdesc:a3204b1f8a0dafb33b4ccc16570a40999"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function checks a public-private RSA key pair.  <a href="#a3204b1f8a0dafb33b4ccc16570a40999">More...</a><br /></td></tr>
<tr class="separator:a3204b1f8a0dafb33b4ccc16570a40999"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9db0f76aff9a6ce179b6fbe329bf5569"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a9db0f76aff9a6ce179b6fbe329bf5569">mbedtls_rsa_public</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:a9db0f76aff9a6ce179b6fbe329bf5569"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs an RSA public key operation.  <a href="#a9db0f76aff9a6ce179b6fbe329bf5569">More...</a><br /></td></tr>
<tr class="separator:a9db0f76aff9a6ce179b6fbe329bf5569"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e016741ddaa354916ade4d48e9a0965"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a3e016741ddaa354916ade4d48e9a0965">mbedtls_rsa_private</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:a3e016741ddaa354916ade4d48e9a0965"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs an RSA private key operation.  <a href="#a3e016741ddaa354916ade4d48e9a0965">More...</a><br /></td></tr>
<tr class="separator:a3e016741ddaa354916ade4d48e9a0965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a047b85b9483a9abecaf31af0caa2e7ff"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a047b85b9483a9abecaf31af0caa2e7ff">mbedtls_rsa_pkcs1_encrypt</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:a047b85b9483a9abecaf31af0caa2e7ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function adds the message padding, then performs an RSA operation.  <a href="#a047b85b9483a9abecaf31af0caa2e7ff">More...</a><br /></td></tr>
<tr class="separator:a047b85b9483a9abecaf31af0caa2e7ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5037e3e29277b9d0dc3a4ef84b251f4e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a5037e3e29277b9d0dc3a4ef84b251f4e">mbedtls_rsa_rsaes_pkcs1_v15_encrypt</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:a5037e3e29277b9d0dc3a4ef84b251f4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v1.5 encryption operation (RSAES-PKCS1-v1_5-ENCRYPT).  <a href="#a5037e3e29277b9d0dc3a4ef84b251f4e">More...</a><br /></td></tr>
<tr class="separator:a5037e3e29277b9d0dc3a4ef84b251f4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2dda710a8a517d02220632bcf0eda13"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ad2dda710a8a517d02220632bcf0eda13">mbedtls_rsa_rsaes_oaep_encrypt</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, const unsigned char *label, size_t label_len, size_t ilen, const unsigned char *input, unsigned char *output)</td></tr>
<tr class="memdesc:ad2dda710a8a517d02220632bcf0eda13"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v2.1 OAEP encryption operation (RSAES-OAEP-ENCRYPT).  <a href="#ad2dda710a8a517d02220632bcf0eda13">More...</a><br /></td></tr>
<tr class="separator:ad2dda710a8a517d02220632bcf0eda13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58f99b884b1697526061bedfe7be5570"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a58f99b884b1697526061bedfe7be5570">mbedtls_rsa_pkcs1_decrypt</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)</td></tr>
<tr class="memdesc:a58f99b884b1697526061bedfe7be5570"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs an RSA operation, then removes the message padding.  <a href="#a58f99b884b1697526061bedfe7be5570">More...</a><br /></td></tr>
<tr class="separator:a58f99b884b1697526061bedfe7be5570"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57b7b96e1dbb900bb42cc2e1704e051b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a57b7b96e1dbb900bb42cc2e1704e051b">mbedtls_rsa_rsaes_pkcs1_v15_decrypt</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)</td></tr>
<tr class="memdesc:a57b7b96e1dbb900bb42cc2e1704e051b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v1.5 decryption operation (RSAES-PKCS1-v1_5-DECRYPT).  <a href="#a57b7b96e1dbb900bb42cc2e1704e051b">More...</a><br /></td></tr>
<tr class="separator:a57b7b96e1dbb900bb42cc2e1704e051b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe0ea987f1d1627cc86137e5b1595da8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#afe0ea987f1d1627cc86137e5b1595da8">mbedtls_rsa_rsaes_oaep_decrypt</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, const unsigned char *label, size_t label_len, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)</td></tr>
<tr class="memdesc:afe0ea987f1d1627cc86137e5b1595da8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v2.1 OAEP decryption operation (RSAES-OAEP-DECRYPT).  <a href="#afe0ea987f1d1627cc86137e5b1595da8">More...</a><br /></td></tr>
<tr class="separator:afe0ea987f1d1627cc86137e5b1595da8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47d9e8989e233e986c59dc2aeb4a4caf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a47d9e8989e233e986c59dc2aeb4a4caf">mbedtls_rsa_pkcs1_sign</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig)</td></tr>
<tr class="memdesc:a47d9e8989e233e986c59dc2aeb4a4caf"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a private RSA operation to sign a message digest using PKCS#1.  <a href="#a47d9e8989e233e986c59dc2aeb4a4caf">More...</a><br /></td></tr>
<tr class="separator:a47d9e8989e233e986c59dc2aeb4a4caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed5ff7848640b50f4a829a43f7135de4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#aed5ff7848640b50f4a829a43f7135de4">mbedtls_rsa_rsassa_pkcs1_v15_sign</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig)</td></tr>
<tr class="memdesc:aed5ff7848640b50f4a829a43f7135de4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v1.5 signature operation (RSASSA-PKCS1-v1_5-SIGN).  <a href="#aed5ff7848640b50f4a829a43f7135de4">More...</a><br /></td></tr>
<tr class="separator:aed5ff7848640b50f4a829a43f7135de4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec5d149705050cd3839fe68e095e32b2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#aec5d149705050cd3839fe68e095e32b2">mbedtls_rsa_rsassa_pss_sign</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig)</td></tr>
<tr class="memdesc:aec5d149705050cd3839fe68e095e32b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v2.1 PSS signature operation (RSASSA-PSS-SIGN).  <a href="#aec5d149705050cd3839fe68e095e32b2">More...</a><br /></td></tr>
<tr class="separator:aec5d149705050cd3839fe68e095e32b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0aed18dcd3095b0ec29ed45a698a1935"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a0aed18dcd3095b0ec29ed45a698a1935">mbedtls_rsa_pkcs1_verify</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig)</td></tr>
<tr class="memdesc:a0aed18dcd3095b0ec29ed45a698a1935"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a public RSA operation and checks the message digest.  <a href="#a0aed18dcd3095b0ec29ed45a698a1935">More...</a><br /></td></tr>
<tr class="separator:a0aed18dcd3095b0ec29ed45a698a1935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27b1f6721bfe13049ebda58b0684f446"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a27b1f6721bfe13049ebda58b0684f446">mbedtls_rsa_rsassa_pkcs1_v15_verify</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig)</td></tr>
<tr class="memdesc:a27b1f6721bfe13049ebda58b0684f446"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v1.5 verification operation (RSASSA-PKCS1-v1_5-VERIFY).  <a href="#a27b1f6721bfe13049ebda58b0684f446">More...</a><br /></td></tr>
<tr class="separator:a27b1f6721bfe13049ebda58b0684f446"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71b172ac54391d845ec163a20cbec09d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a71b172ac54391d845ec163a20cbec09d">mbedtls_rsa_rsassa_pss_verify</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig)</td></tr>
<tr class="memdesc:a71b172ac54391d845ec163a20cbec09d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY).  <a href="#a71b172ac54391d845ec163a20cbec09d">More...</a><br /></td></tr>
<tr class="separator:a71b172ac54391d845ec163a20cbec09d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7791a1e03b00651a844dc6f5f32aaaa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#ac7791a1e03b00651a844dc6f5f32aaaa">mbedtls_rsa_rsassa_pss_verify_ext</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, unsigned int hashlen, const unsigned char *hash, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> mgf1_hash_id, int expected_salt_len, const unsigned char *sig)</td></tr>
<tr class="memdesc:ac7791a1e03b00651a844dc6f5f32aaaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY).  <a href="#ac7791a1e03b00651a844dc6f5f32aaaa">More...</a><br /></td></tr>
<tr class="separator:ac7791a1e03b00651a844dc6f5f32aaaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c88adae1a4e49c11d210c59dbc89f46"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a6c88adae1a4e49c11d210c59dbc89f46">mbedtls_rsa_copy</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *dst, const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *src)</td></tr>
<tr class="memdesc:a6c88adae1a4e49c11d210c59dbc89f46"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function copies the components of an RSA context.  <a href="#a6c88adae1a4e49c11d210c59dbc89f46">More...</a><br /></td></tr>
<tr class="separator:a6c88adae1a4e49c11d210c59dbc89f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74eb13ecac0de582b01b4332c1d66494"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a74eb13ecac0de582b01b4332c1d66494">mbedtls_rsa_free</a> (<a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *ctx)</td></tr>
<tr class="memdesc:a74eb13ecac0de582b01b4332c1d66494"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function frees the components of an RSA key.  <a href="#a74eb13ecac0de582b01b4332c1d66494">More...</a><br /></td></tr>
<tr class="separator:a74eb13ecac0de582b01b4332c1d66494"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e5352f846fbb0938fb757be5cde0262"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rsa_8h.html#a1e5352f846fbb0938fb757be5cde0262">mbedtls_rsa_self_test</a> (int verbose)</td></tr>
<tr class="memdesc:a1e5352f846fbb0938fb757be5cde0262"><td class="mdescLeft">&#160;</td><td class="mdescRight">The RSA checkup routine.  <a href="#a1e5352f846fbb0938fb757be5cde0262">More...</a><br /></td></tr>
<tr class="separator:a1e5352f846fbb0938fb757be5cde0262"><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>The RSA public-key cryptosystem. </p>
<p>For more information, see <em>Public-Key Cryptography Standards (PKCS) #1 v1.5: RSA Encryption</em> and <em>Public-Key Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography Specifications</em>. </p>

<p class="definition">Definition in file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="abf2997e01281b898fd4594af0b7bfbb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf2997e01281b898fd4594af0b7bfbb4">&#9670;&nbsp;</a></span>MBEDTLS_ERR_RSA_BAD_INPUT_DATA</h2>

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

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00048">48</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

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

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00058">58</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_INVALID_PADDING&#160;&#160;&#160;-0x4100</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Input data contains invalid padding and is rejected. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00049">49</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_KEY_CHECK_FAILED&#160;&#160;&#160;-0x4200</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Key failed to pass the validity check of the library. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00051">51</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_KEY_GEN_FAILED&#160;&#160;&#160;-0x4180</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Something failed during generation of a key. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00050">50</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE&#160;&#160;&#160;-0x4400</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The output buffer for decryption is not large enough. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00055">55</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_PRIVATE_FAILED&#160;&#160;&#160;-0x4300</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The private key operation failed. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00053">53</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_PUBLIC_FAILED&#160;&#160;&#160;-0x4280</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The public key operation failed. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00052">52</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_RNG_FAILED&#160;&#160;&#160;-0x4480</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The random generator failed to generate non-zeros. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00056">56</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION&#160;&#160;&#160;-0x4500</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The implementation does not offer the requested operation, for example, because of security violations or lack of functionality. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00057">57</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_RSA_VERIFY_FAILED&#160;&#160;&#160;-0x4380</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The PKCS#1 verification failed. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00054">54</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_RSA_CRYPT&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Identifier for RSA encryption and decryption operations. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00070">70</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_RSA_PKCS_V15&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Use PKCS-1 v1.5 encoding. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00066">66</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_RSA_PKCS_V21&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Use PKCS-1 v2.1 encoding. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00067">67</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_RSA_PRIVATE&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Request public key operation. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00064">64</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_RSA_PUBLIC&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Request private key operation. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00063">63</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

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

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00072">72</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_RSA_SIGN&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Identifier for RSA signature operations. </p>

<p class="definition">Definition at line <a class="el" href="rsa_8h_source.html#l00069">69</a> of file <a class="el" href="rsa_8h_source.html">rsa.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_check_privkey </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function checks if a context contains an RSA private key and perform basic consistency checks. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context to check.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The consistency checks performed by this function not only ensure that <a class="el" href="rsa_8h.html#a3e016741ddaa354916ade4d48e9a0965" title="This function performs an RSA private key operation. ">mbedtls_rsa_private()</a> can be called successfully on the given context, but that the various parameters are mutually consistent with high probability, in the sense that <a class="el" href="rsa_8h.html#a9db0f76aff9a6ce179b6fbe329bf5569" title="This function performs an RSA public key operation. ">mbedtls_rsa_public()</a> and <a class="el" href="rsa_8h.html#a3e016741ddaa354916ade4d48e9a0965" title="This function performs an RSA private key operation. ">mbedtls_rsa_private()</a> are inverses.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function should catch accidental misconfigurations like swapping of parameters, but it cannot establish full trust in neither the quality nor the consistency of the key material that was used to setup the given RSA context: <ul>
<li>
Consistency: Imported parameters that are irrelevant for the implementation might be silently dropped. If dropped, the current function does not have access to them, and therefore cannot check them. See <a class="el" href="rsa_8h.html#a09e4d51afc792bbb2ff9f4b411ab9158" title="This function completes an RSA context from a set of imported core parameters. ">mbedtls_rsa_complete()</a>. If you want to check the consistency of the entire content of an PKCS1-encoded RSA private key, for example, you should use mbedtls_rsa_validate_params() before setting up the RSA context. Additionally, if the implementation performs empirical checks, these checks substantiate but do not guarantee consistency. </li>
<li>
Quality: This function is not expected to perform extended quality assessments like checking that the prime factors are safe. Additionally, it is the responsibility of the user to ensure the trustworthiness of the source of his RSA parameters, which goes beyond what is effectively checkable by the library.</li>
</ul>
</dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_check_pub_priv </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>pub</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>prv</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function checks a public-private RSA key pair. </p>
<p>It checks each of the contexts, and makes sure they match.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pub</td><td>The RSA context holding the public key. </td></tr>
    <tr><td class="paramname">prv</td><td>The RSA context holding the private key.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_check_pubkey </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function checks if a context contains at least an RSA public key. </p>
<p>If the function runs successfully, it is guaranteed that enough information is present to perform an RSA public key operation using <a class="el" href="rsa_8h.html#a9db0f76aff9a6ce179b6fbe329bf5569" title="This function performs an RSA public key operation. ">mbedtls_rsa_public()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context to check.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_complete </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function completes an RSA context from a set of imported core parameters. </p>
<p>To setup an RSA public key, precisely <code>N</code> and <code>E</code> must have been imported.</p>
<p>To setup an RSA private key, sufficient information must be present for the other parameters to be derivable.</p>
<p>The default implementation supports the following: </p><ul>
<li>
Derive <code>P</code>, <code>Q</code> from <code>N</code>, <code>D</code>, <code>E</code>. </li>
<li>
Derive <code>N</code>, <code>D</code> from <code>P</code>, <code>Q</code>, <code>E</code>.</li>
</ul>
<p>Alternative implementations need not support these.</p>
<p>If this function runs successfully, it guarantees that the RSA context can be used for RSA operations without the risk of failure or crash.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context holding imported parameters.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or <a class="el" href="rsa_8h.html#abf2997e01281b898fd4594af0b7bfbb4">MBEDTLS_ERR_RSA_BAD_INPUT_DATA</a> if the attempted derivations failed.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function need not perform consistency checks for the imported parameters. In particular, parameters that are not needed by the implementation might be silently discarded and left unchecked. To check the consistency of the key material, see <a class="el" href="rsa_8h.html#ab393f7a4d3882ac0b2afa51b641bf475" title="This function checks if a context contains an RSA private key and perform basic consistency checks...">mbedtls_rsa_check_privkey()</a>. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_copy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>src</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function copies the components of an RSA context. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dst</td><td>The destination context. </td></tr>
    <tr><td class="paramname">src</td><td>The source context.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, <a class="el" href="bignum_8h.html#a9bb66b22357ba30dedfe856efeab5544">MBEDTLS_ERR_MPI_ALLOC_FAILED</a> on memory allocation failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_export </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_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="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>Q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>E</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function exports the core parameters of an RSA key. </p>
<p>If this function runs successfully, the non-NULL buffers pointed to by <code>N</code>, <code>P</code>, <code>Q</code>, <code>D</code>, and <code>E</code> are fully written, with additional unused space filled leading by zero Bytes.</p>
<p>Possible reasons for returning <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>:</p><ul>
<li>
An alternative RSA implementation is in use, which stores the key externally, and either cannot or should not export it into RAM. </li>
<li>
A SW or HW implementation might not support a certain deduction. For example, <code>P</code>, <code>Q</code> from <code>N</code>, <code>D</code>, and <code>E</code> if the former are not part of the implementation.</li>
</ul>
<p>If the function fails due to an unsupported operation, the RSA context stays intact and remains usable.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context. </td></tr>
    <tr><td class="paramname">N</td><td>The MPI to hold the RSA modulus, or NULL. </td></tr>
    <tr><td class="paramname">P</td><td>The MPI to hold the first prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">Q</td><td>The MPI to hold the second prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">D</td><td>The MPI to hold the private exponent, or NULL. </td></tr>
    <tr><td class="paramname">E</td><td>The MPI to hold the public exponent, or NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a> if exporting the requested parameters cannot be done due to missing functionality or because of security policies, or a non-zero return code on any other failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_export_crt </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_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="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>DP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>DQ</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>QP</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function exports CRT parameters of a private RSA key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context. </td></tr>
    <tr><td class="paramname">DP</td><td>The MPI to hold D modulo P-1, or NULL. </td></tr>
    <tr><td class="paramname">DQ</td><td>The MPI to hold D modulo Q-1, or NULL. </td></tr>
    <tr><td class="paramname">QP</td><td>The MPI to hold modular inverse of Q modulo P, or NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, non-zero error code otherwise.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative RSA implementations not using CRT-parameters internally can implement this function based on mbedtls_rsa_deduce_opt(). </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_export_raw </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_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>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>N_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>P_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>Q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>Q_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>D_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>E</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>E_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function exports core parameters of an RSA key in raw big-endian binary format. </p>
<p>If this function runs successfully, the non-NULL buffers pointed to by <code>N</code>, <code>P</code>, <code>Q</code>, <code>D</code>, and <code>E</code> are fully written, with additional unused space filled leading by zero Bytes.</p>
<p>Possible reasons for returning <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>:</p><ul>
<li>
An alternative RSA implementation is in use, which stores the key externally, and either cannot or should not export it into RAM. </li>
<li>
A SW or HW implementation might not support a certain deduction. For example, <code>P</code>, <code>Q</code> from <code>N</code>, <code>D</code>, and <code>E</code> if the former are not part of the implementation.</li>
</ul>
<p>If the function fails due to an unsupported operation, the RSA context stays intact and remains usable.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context. </td></tr>
    <tr><td class="paramname">N</td><td>The Byte array to store the RSA modulus, or NULL. </td></tr>
    <tr><td class="paramname">N_len</td><td>The size of the buffer for the modulus. </td></tr>
    <tr><td class="paramname">P</td><td>The Byte array to hold the first prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">P_len</td><td>The size of the buffer for the first prime factor. </td></tr>
    <tr><td class="paramname">Q</td><td>The Byte array to hold the second prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">Q_len</td><td>The size of the buffer for the second prime factor. </td></tr>
    <tr><td class="paramname">D</td><td>The Byte array to hold the private exponent, or NULL. </td></tr>
    <tr><td class="paramname">D_len</td><td>The size of the buffer for the private exponent. </td></tr>
    <tr><td class="paramname">E</td><td>The Byte array to hold the public exponent, or NULL. </td></tr>
    <tr><td class="paramname">E_len</td><td>The size of the buffer for the public exponent.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The length fields are ignored if the corresponding buffer pointers are NULL.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a> if exporting the requested parameters cannot be done due to missing functionality or because of security policies, or a non-zero return code on any other failure. </dd></dl>

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

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

<p>This function frees the components of an RSA key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA Context to free. </td></tr>
  </table>
  </dd>
</dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_gen_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>nbits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>exponent</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates an RSA keypair. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context used to hold the key. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">nbits</td><td>The size of the public key in bits. </td></tr>
    <tr><td class="paramname">exponent</td><td>The public exponent. For example, 65537.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="rsa_8h.html#a15b13ee0d1e7d6fd10f07571cc4ff9de" title="This function initializes an RSA context. ">mbedtls_rsa_init()</a> must be called before this function, to set up the RSA context.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mbedtls_rsa_get_len </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function retrieves the length of RSA modulus in Bytes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The length of the RSA modulus in Bytes. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_import </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>Q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *&#160;</td>
          <td class="paramname"><em>E</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function imports a set of core parameters into an RSA context. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context to store the parameters in. </td></tr>
    <tr><td class="paramname">N</td><td>The RSA modulus, or NULL. </td></tr>
    <tr><td class="paramname">P</td><td>The first prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">Q</td><td>The second prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">D</td><td>The private exponent, or NULL. </td></tr>
    <tr><td class="paramname">E</td><td>The public exponent, or NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This function can be called multiple times for successive imports, if the parameters are not simultaneously present.</dd></dl>
<p>Any sequence of calls to this function should be followed by a call to <a class="el" href="rsa_8h.html#a09e4d51afc792bbb2ff9f4b411ab9158" title="This function completes an RSA context from a set of imported core parameters. ">mbedtls_rsa_complete()</a>, which checks and completes the provided information to a ready-for-use public or private RSA key.</p>
<dl class="section note"><dt>Note</dt><dd>See <a class="el" href="rsa_8h.html#a09e4d51afc792bbb2ff9f4b411ab9158" title="This function completes an RSA context from a set of imported core parameters. ">mbedtls_rsa_complete()</a> for more information on which parameters are necessary to set up a private or public RSA key.</dd>
<dd>
The imported parameters are copied and need not be preserved for the lifetime of the RSA context being set up.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or a non-zero error code on failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_import_raw </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char const *&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>N_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char const *&#160;</td>
          <td class="paramname"><em>P</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>P_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char const *&#160;</td>
          <td class="paramname"><em>Q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>Q_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char const *&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>D_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char const *&#160;</td>
          <td class="paramname"><em>E</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>E_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function imports core RSA parameters, in raw big-endian binary format, into an RSA context. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The initialized RSA context to store the parameters in. </td></tr>
    <tr><td class="paramname">N</td><td>The RSA modulus, or NULL. </td></tr>
    <tr><td class="paramname">N_len</td><td>The Byte length of <code>N</code>, ignored if <code>N</code> == NULL. </td></tr>
    <tr><td class="paramname">P</td><td>The first prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">P_len</td><td>The Byte length of <code>P</code>, ignored if <code>P</code> == NULL. </td></tr>
    <tr><td class="paramname">Q</td><td>The second prime factor of <code>N</code>, or NULL. </td></tr>
    <tr><td class="paramname">Q_len</td><td>The Byte length of <code>Q</code>, ignored if <code>Q</code> == NULL. </td></tr>
    <tr><td class="paramname">D</td><td>The private exponent, or NULL. </td></tr>
    <tr><td class="paramname">D_len</td><td>The Byte length of <code>D</code>, ignored if <code>D</code> == NULL. </td></tr>
    <tr><td class="paramname">E</td><td>The public exponent, or NULL. </td></tr>
    <tr><td class="paramname">E_len</td><td>The Byte length of <code>E</code>, ignored if <code>E</code> == NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This function can be called multiple times for successive imports, if the parameters are not simultaneously present.</dd></dl>
<p>Any sequence of calls to this function should be followed by a call to <a class="el" href="rsa_8h.html#a09e4d51afc792bbb2ff9f4b411ab9158" title="This function completes an RSA context from a set of imported core parameters. ">mbedtls_rsa_complete()</a>, which checks and completes the provided information to a ready-for-use public or private RSA key.</p>
<dl class="section note"><dt>Note</dt><dd>See <a class="el" href="rsa_8h.html#a09e4d51afc792bbb2ff9f4b411ab9158" title="This function completes an RSA context from a set of imported core parameters. ">mbedtls_rsa_complete()</a> for more information on which parameters are necessary to set up a private or public RSA key.</dd>
<dd>
The imported parameters are copied and need not be preserved for the lifetime of the RSA context being set up.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or a non-zero error code on failure. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mbedtls_rsa_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_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>padding</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>hash_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function initializes an RSA context. </p>
<dl class="section note"><dt>Note</dt><dd>Set padding to <a class="el" href="rsa_8h.html#a903f0c378a6303efdbc1f53b18603bb1">MBEDTLS_RSA_PKCS_V21</a> for the RSAES-OAEP encryption scheme and the RSASSA-PSS signature scheme.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context to initialize. </td></tr>
    <tr><td class="paramname">padding</td><td>Selects padding mode: <a class="el" href="rsa_8h.html#a426a0d77233000f50dcce6f27d5ddd05">MBEDTLS_RSA_PKCS_V15</a> or <a class="el" href="rsa_8h.html#a903f0c378a6303efdbc1f53b18603bb1">MBEDTLS_RSA_PKCS_V21</a>. </td></tr>
    <tr><td class="paramname">hash_id</td><td>The hash identifier of <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296" title="Enumeration of supported message digests. ">mbedtls_md_type_t</a> type, if <code>padding</code> is <a class="el" href="rsa_8h.html#a903f0c378a6303efdbc1f53b18603bb1">MBEDTLS_RSA_PKCS_V21</a>.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The <code>hash_id</code> parameter is ignored when using <a class="el" href="rsa_8h.html#a426a0d77233000f50dcce6f27d5ddd05">MBEDTLS_RSA_PKCS_V15</a> padding.</dd>
<dd>
The choice of padding mode is strictly enforced for private key operations, since there might be security concerns in mixing padding modes. For public key operations it is a default value, which can be overriden by calling specific <code>rsa_rsaes_xxx</code> or <code>rsa_rsassa_xxx</code> functions.</dd>
<dd>
The hash selected in <code>hash_id</code> is always used for OEAP encryption. For PSS signatures, it is always used for making signatures, but can be overriden for verifying them. If set to <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>, it is always overriden. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_pkcs1_decrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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>olen</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>output_max_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs an RSA operation, then removes the message padding. </p>
<p>It is the generic wrapper for performing a PKCS#1 decryption operation using the <code>mode</code> from the context.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">olen</td><td>The length of the plaintext. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the encrypted data. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer used to hold the plaintext. </td></tr>
    <tr><td class="paramname">output_max_len</td><td>The maximum length of the output buffer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000033">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The output buffer length <code>output_max_len</code> should be as large as the size <code>ctx-&gt;len</code> of <code>ctx-&gt;N</code> (for example, 128 Bytes if RSA-1024 is used) to be able to hold an arbitrary decrypted message. If it is not large enough to hold the decryption of the particular ciphertext provided, the function returns <code>MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE</code>.</dd>
<dd>
The input buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_pkcs1_encrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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>ilen</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 adds the message padding, then performs an RSA operation. </p>
<p>It is the generic wrapper for performing a PKCS#1 encryption operation using the <code>mode</code> from the context.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Needed for padding, PKCS#1 v2.1 encoding, and <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">ilen</td><td>The length of the plaintext. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the data to encrypt. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer used to hold the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000030">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The input and output buffers must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_pkcs1_sign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a private RSA operation to sign a message digest using PKCS#1. </p>
<p>It is the generic wrapper for performing a PKCS#1 signature using the <code>mode</code> from the context.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Needed for PKCS#1 v2.1 encoding and for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer to hold the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000036">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the signing operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used.</dd>
<dd>
For PKCS#1 v2.1 encoding, see comments on <a class="el" href="rsa_8h.html#aec5d149705050cd3839fe68e095e32b2" title="This function performs a PKCS#1 v2.1 PSS signature operation (RSASSA-PSS-SIGN). ">mbedtls_rsa_rsassa_pss_sign()</a> for details on <code>md_alg</code> and <code>hash_id</code>. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_pkcs1_verify </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a public RSA operation and checks the message digest. </p>
<p>This is the generic wrapper for performing a PKCS#1 verification using the mode from the context.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA public key context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer holding the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000039">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the verify operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used.</dd>
<dd>
For PKCS#1 v2.1 encoding, see comments on <a class="el" href="rsa_8h.html#a71b172ac54391d845ec163a20cbec09d" title="This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY). ">mbedtls_rsa_rsassa_pss_verify()</a> about <code>md_alg</code> and <code>hash_id</code>. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_private </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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 an RSA private key operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Needed for blinding. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">input</td><td>The input buffer. </td></tr>
    <tr><td class="paramname">output</td><td>The output buffer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The input and output buffers must be large enough. For example, 128 Bytes if RSA-1024 is used.</dd>
<dd>
Blinding is used if and only if a PRNG is provided.</dd>
<dd>
If blinding is used, both the base of exponentation and the exponent are blinded, providing protection against some side-channel attacks.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>It is deprecated and a security risk to not provide a PRNG here and thereby prevent the use of blinding. Future versions of the library may enforce the presence of a PRNG. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_public </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</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 an RSA public key operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">input</td><td>The input buffer. </td></tr>
    <tr><td class="paramname">output</td><td>The output buffer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function does not handle message padding.</dd>
<dd>
Make sure to set <code>input</code>[0] = 0 or ensure that input is smaller than <code>N</code>.</dd>
<dd>
The input and output buffers must be large enough. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsaes_oaep_decrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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>label</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>label_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>olen</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>output_max_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v2.1 OAEP decryption operation (RSAES-OAEP-DECRYPT). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">label</td><td>The buffer holding the custom label to use. </td></tr>
    <tr><td class="paramname">label_len</td><td>The length of the label. </td></tr>
    <tr><td class="paramname">olen</td><td>The length of the plaintext. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the encrypted data. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer to hold the plaintext. </td></tr>
    <tr><td class="paramname">output_max_len</td><td>The maximum length of the output buffer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000035">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The output buffer length <code>output_max_len</code> should be as large as the size <code>ctx-&gt;len</code> of <code>ctx-&gt;N</code>, for example, 128 Bytes if RSA-1024 is used, to be able to hold an arbitrary decrypted message. If it is not large enough to hold the decryption of the particular ciphertext provided, the function returns <a class="el" href="rsa_8h.html#a2d3d26a305009e5b26957e21b6b151c9">MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE</a>.</dd>
<dd>
The input buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsaes_oaep_encrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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>label</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>label_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>ilen</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 PKCS#1 v2.1 OAEP encryption operation (RSAES-OAEP-ENCRYPT). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Needed for padding and PKCS#1 v2.1 encoding and <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">label</td><td>The buffer holding the custom label to use. </td></tr>
    <tr><td class="paramname">label_len</td><td>The length of the label. </td></tr>
    <tr><td class="paramname">ilen</td><td>The length of the plaintext. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the data to encrypt. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer used to hold the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000032">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The output buffer must be as large as the size of ctx-&gt;N. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsaes_pkcs1_v15_decrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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>olen</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>output_max_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v1.5 decryption operation (RSAES-PKCS1-v1_5-DECRYPT). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">olen</td><td>The length of the plaintext. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the encrypted data. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer to hold the plaintext. </td></tr>
    <tr><td class="paramname">output_max_len</td><td>The maximum length of the output buffer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000034">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The output buffer length <code>output_max_len</code> should be as large as the size <code>ctx-&gt;len</code> of <code>ctx-&gt;N</code>, for example, 128 Bytes if RSA-1024 is used, to be able to hold an arbitrary decrypted message. If it is not large enough to hold the decryption of the particular ciphertext provided, the function returns <a class="el" href="rsa_8h.html#a2d3d26a305009e5b26957e21b6b151c9">MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE</a>.</dd>
<dd>
The input buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsaes_pkcs1_v15_encrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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>ilen</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 PKCS#1 v1.5 encryption operation (RSAES-PKCS1-v1_5-ENCRYPT). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Needed for padding and <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">ilen</td><td>The length of the plaintext. </td></tr>
    <tr><td class="paramname">input</td><td>The buffer holding the data to encrypt. </td></tr>
    <tr><td class="paramname">output</td><td>The buffer used to hold the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000031">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The output buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsassa_pkcs1_v15_sign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v1.5 signature operation (RSASSA-PKCS1-v1_5-SIGN). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer to hold the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000037">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the signing operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsassa_pkcs1_v15_verify </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v1.5 verification operation (RSASSA-PKCS1-v1_5-VERIFY). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA public key context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer holding the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000040">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the verify operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsassa_pss_sign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v2.1 PSS signature operation (RSASSA-PSS-SIGN). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Needed for PKCS#1 v2.1 encoding and for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer to hold the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000038">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the signing operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used.</dd>
<dd>
The <code>hash_id</code> in the RSA context is the one used for the encoding. <code>md_alg</code> in the function call is the type of hash that is encoded. According to <em>RFC-3447: Public-Key Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography Specifications</em> it is advised to keep both hashes the same. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsassa_pss_verify </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY). </p>
<p>The hash function for the MGF mask generating function is that specified in the RSA context.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA public key context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer holding the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000041">Deprecated:</a></b></dt><dd>It is deprecated and discouraged to call this function in <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> mode. Future versions of the library are likely to remove the <code>mode</code> argument and have it implicitly set to <a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a>.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Alternative implementations of RSA need not support mode being set to <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a> and might instead return <a class="el" href="rsa_8h.html#ae4708057ba1fead5aa372d0dc7254083">MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the verify operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used.</dd>
<dd>
The <code>hash_id</code> in the RSA context is the one used for the verification. <code>md_alg</code> in the function call is the type of hash that is verified. According to <em>RFC-3447: Public-Key Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography Specifications</em> it is advised to keep both hashes the same. If <code>hash_id</code> in the RSA context is unset, the <code>md_alg</code> from the function call is used. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_rsassa_pss_verify_ext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, unsigned char *, size_t)&#160;</td>
          <td class="paramname"><em>f_rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>p_rng</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"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>md_alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>hashlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a>&#160;</td>
          <td class="paramname"><em>mgf1_hash_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>expected_salt_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY). </p>
<p>The hash function for the MGF mask generating function is that specified in <code>mgf1_hash_id</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA public key context. </td></tr>
    <tr><td class="paramname">f_rng</td><td>The RNG function. Only needed for <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">p_rng</td><td>The RNG parameter. </td></tr>
    <tr><td class="paramname">mode</td><td><a class="el" href="rsa_8h.html#a0a9033343f995250ee30844b0defa3e9">MBEDTLS_RSA_PUBLIC</a> or <a class="el" href="rsa_8h.html#a031a66acf0364a48a80827dd8713874d">MBEDTLS_RSA_PRIVATE</a>. </td></tr>
    <tr><td class="paramname">md_alg</td><td>The message-digest algorithm used to hash the original data. Use <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a> for signing raw data. </td></tr>
    <tr><td class="paramname">hashlen</td><td>The length of the message digest. Only used if <code>md_alg</code> is <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296a564288006d735f75738021342ca5f9d1">MBEDTLS_MD_NONE</a>. </td></tr>
    <tr><td class="paramname">hash</td><td>The buffer holding the message digest. </td></tr>
    <tr><td class="paramname">mgf1_hash_id</td><td>The message digest used for mask generation. </td></tr>
    <tr><td class="paramname">expected_salt_len</td><td>The length of the salt used in padding. Use <a class="el" href="rsa_8h.html#ab7aa2f548235465c0f384a13617f184f">MBEDTLS_RSA_SALT_LEN_ANY</a> to accept any salt length. </td></tr>
    <tr><td class="paramname">sig</td><td>The buffer holding the ciphertext.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>0</code> if the verify operation was successful, or an <code>MBEDTLS_ERR_RSA_XXX</code> error code on failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The <code>sig</code> buffer must be as large as the size of <code>ctx-&gt;N</code>. For example, 128 Bytes if RSA-1024 is used.</dd>
<dd>
The <code>hash_id</code> in the RSA context is ignored. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_rsa_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 RSA 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="ad92c3d026f78e8cac7bac4bf94dc0562"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad92c3d026f78e8cac7bac4bf94dc0562">&#9670;&nbsp;</a></span>mbedtls_rsa_set_padding()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mbedtls_rsa_set_padding </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_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>padding</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>hash_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function sets padding for an already initialized RSA context. See <a class="el" href="rsa_8h.html#a15b13ee0d1e7d6fd10f07571cc4ff9de" title="This function initializes an RSA context. ">mbedtls_rsa_init()</a> for details. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>The RSA context to be set. </td></tr>
    <tr><td class="paramname">padding</td><td>Selects padding mode: <a class="el" href="rsa_8h.html#a426a0d77233000f50dcce6f27d5ddd05">MBEDTLS_RSA_PKCS_V15</a> or <a class="el" href="rsa_8h.html#a903f0c378a6303efdbc1f53b18603bb1">MBEDTLS_RSA_PKCS_V21</a>. </td></tr>
    <tr><td class="paramname">hash_id</td><td>The <a class="el" href="rsa_8h.html#a903f0c378a6303efdbc1f53b18603bb1">MBEDTLS_RSA_PKCS_V21</a> hash identifier. </td></tr>
  </table>
  </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>