Sophie

Sophie

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

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: pk.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="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">pk.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Public Key abstraction layer.  
<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="md_8h_source.html">md.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="rsa_8h_source.html">rsa.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ecp_8h_source.html">ecp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ecdsa_8h_source.html">ecdsa.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for pk.h:</div>
<div class="dyncontent">
<div class="center"><img src="pk_8h__incl.png" border="0" usemap="#pk_8h" alt=""/></div>
<map name="pk_8h" id="pk_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="pk_8h__dep__incl.png" border="0" usemap="#pk_8hdep" alt=""/></div>
<map name="pk_8hdep" id="pk_8hdep">
</map>
</div>
</div>
<p><a href="pk_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__pk__rsassa__pss__options.html">mbedtls_pk_rsassa_pss_options</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options for RSASSA-PSS signature verification. See <code><a class="el" href="rsa_8h.html#ac7791a1e03b00651a844dc6f5f32aaaa" title="This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY). ">mbedtls_rsa_rsassa_pss_verify_ext()</a></code>  <a href="structmbedtls__pk__rsassa__pss__options.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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__pk__debug__item.html">mbedtls_pk_debug_item</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Item to send to the debug module.  <a href="structmbedtls__pk__debug__item.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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__pk__context.html">mbedtls_pk_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Public key container.  <a href="structmbedtls__pk__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:acf55308a7cac0363ea25de294c8b633d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#acf55308a7cac0363ea25de294c8b633d">MBEDTLS_ERR_PK_ALLOC_FAILED</a>&#160;&#160;&#160;-0x3F80</td></tr>
<tr class="separator:acf55308a7cac0363ea25de294c8b633d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a7fb7cb156476722c09de42368156dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a7a7fb7cb156476722c09de42368156dc">MBEDTLS_ERR_PK_TYPE_MISMATCH</a>&#160;&#160;&#160;-0x3F00</td></tr>
<tr class="separator:a7a7fb7cb156476722c09de42368156dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab119ef4dc86ea6546472299a259bfe8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#aab119ef4dc86ea6546472299a259bfe8">MBEDTLS_ERR_PK_BAD_INPUT_DATA</a>&#160;&#160;&#160;-0x3E80</td></tr>
<tr class="separator:aab119ef4dc86ea6546472299a259bfe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a334a28580efaab3c749fdf1dde28feb8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a334a28580efaab3c749fdf1dde28feb8">MBEDTLS_ERR_PK_FILE_IO_ERROR</a>&#160;&#160;&#160;-0x3E00</td></tr>
<tr class="separator:a334a28580efaab3c749fdf1dde28feb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b589f81143439f8580b3004dc8ecaf1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a9b589f81143439f8580b3004dc8ecaf1">MBEDTLS_ERR_PK_KEY_INVALID_VERSION</a>&#160;&#160;&#160;-0x3D80</td></tr>
<tr class="separator:a9b589f81143439f8580b3004dc8ecaf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a291c7d21aa2cd94b2100703e8e3a1d06"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a291c7d21aa2cd94b2100703e8e3a1d06">MBEDTLS_ERR_PK_KEY_INVALID_FORMAT</a>&#160;&#160;&#160;-0x3D00</td></tr>
<tr class="separator:a291c7d21aa2cd94b2100703e8e3a1d06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a877b66447bfa2cd49c1b99f1dc887568"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a877b66447bfa2cd49c1b99f1dc887568">MBEDTLS_ERR_PK_UNKNOWN_PK_ALG</a>&#160;&#160;&#160;-0x3C80</td></tr>
<tr class="separator:a877b66447bfa2cd49c1b99f1dc887568"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c1de7ccb4e18a3ea74b35c4e2cb7527"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a9c1de7ccb4e18a3ea74b35c4e2cb7527">MBEDTLS_ERR_PK_PASSWORD_REQUIRED</a>&#160;&#160;&#160;-0x3C00</td></tr>
<tr class="separator:a9c1de7ccb4e18a3ea74b35c4e2cb7527"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24723299c688b1ca6cfa613c19cef6f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a24723299c688b1ca6cfa613c19cef6f5">MBEDTLS_ERR_PK_PASSWORD_MISMATCH</a>&#160;&#160;&#160;-0x3B80</td></tr>
<tr class="separator:a24723299c688b1ca6cfa613c19cef6f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fdf1044cce5beb387d76d19bf4ef0a2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a0fdf1044cce5beb387d76d19bf4ef0a2">MBEDTLS_ERR_PK_INVALID_PUBKEY</a>&#160;&#160;&#160;-0x3B00</td></tr>
<tr class="separator:a0fdf1044cce5beb387d76d19bf4ef0a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d71f30a40d67d5d205a20b69303a341"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a5d71f30a40d67d5d205a20b69303a341">MBEDTLS_ERR_PK_INVALID_ALG</a>&#160;&#160;&#160;-0x3A80</td></tr>
<tr class="separator:a5d71f30a40d67d5d205a20b69303a341"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a802d8b95e9b6a517d597dc92cb591e99"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a802d8b95e9b6a517d597dc92cb591e99">MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE</a>&#160;&#160;&#160;-0x3A00</td></tr>
<tr class="separator:a802d8b95e9b6a517d597dc92cb591e99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4a79b15d48bd86c96767db4b9ce2caf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#af4a79b15d48bd86c96767db4b9ce2caf">MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE</a>&#160;&#160;&#160;-0x3980</td></tr>
<tr class="separator:af4a79b15d48bd86c96767db4b9ce2caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abce78b0c7f04018824b70b816e091dc0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#abce78b0c7f04018824b70b816e091dc0">MBEDTLS_ERR_PK_SIG_LEN_MISMATCH</a>&#160;&#160;&#160;-0x3900</td></tr>
<tr class="separator:abce78b0c7f04018824b70b816e091dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7101f835c913a3daa31720292a596ab8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a7101f835c913a3daa31720292a596ab8">MBEDTLS_ERR_PK_HW_ACCEL_FAILED</a>&#160;&#160;&#160;-0x3880</td></tr>
<tr class="separator:a7101f835c913a3daa31720292a596ab8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73c1247ff4513b853b61b0dc36b69892"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a73c1247ff4513b853b61b0dc36b69892">MBEDTLS_PK_DEBUG_MAX_ITEMS</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:a73c1247ff4513b853b61b0dc36b69892"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a5929d902e6b2dad79458c8583ca5c42d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a></td></tr>
<tr class="memdesc:a5929d902e6b2dad79458c8583ca5c42d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Public key information and operations.  <a href="#a5929d902e6b2dad79458c8583ca5c42d">More...</a><br /></td></tr>
<tr class="separator:a5929d902e6b2dad79458c8583ca5c42d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01453ce20b7a8d47aaecd90ef9997e24"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a01453ce20b7a8d47aaecd90ef9997e24">mbedtls_pk_rsa_alt_decrypt_func</a>) (void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)</td></tr>
<tr class="memdesc:a01453ce20b7a8d47aaecd90ef9997e24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Types for RSA-alt abstraction.  <a href="#a01453ce20b7a8d47aaecd90ef9997e24">More...</a><br /></td></tr>
<tr class="separator:a01453ce20b7a8d47aaecd90ef9997e24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe016079288612bd9d7d9b337b22c66"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#acbe016079288612bd9d7d9b337b22c66">mbedtls_pk_rsa_alt_sign_func</a>) (void *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="separator:acbe016079288612bd9d7d9b337b22c66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1688b04ad105ba002dc47b79ded2e29"><td class="memItemLeft" align="right" valign="top">typedef size_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#ac1688b04ad105ba002dc47b79ded2e29">mbedtls_pk_rsa_alt_key_len_func</a>) (void *ctx)</td></tr>
<tr class="separator:ac1688b04ad105ba002dc47b79ded2e29"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a3fe41eff5605ae727eb9d28dad297020"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a> { <br />
&#160;&#160;<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020a075b125b18a238567d2000c9433b9c79">MBEDTLS_PK_NONE</a> =0, 
<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020ac4fd7ca431c2e748df4ed0a324dd58c5">MBEDTLS_PK_RSA</a>, 
<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020acc363effd0a7c9d6ac0c0660e25b258c">MBEDTLS_PK_ECKEY</a>, 
<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020ac589ed0db52ed62be7e4f378bd04e3bf">MBEDTLS_PK_ECKEY_DH</a>, 
<br />
&#160;&#160;<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020a665615a1098e56bbe747a477ee00ad61">MBEDTLS_PK_ECDSA</a>, 
<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020abc435530cb0e61d0fdde8e1a8278e38f">MBEDTLS_PK_RSA_ALT</a>, 
<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020a8b1bc181a5ea81a49b141925a68d8a92">MBEDTLS_PK_RSASSA_PSS</a>
<br />
 }<tr class="memdesc:a3fe41eff5605ae727eb9d28dad297020"><td class="mdescLeft">&#160;</td><td class="mdescRight">Public key types.  <a href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a3fe41eff5605ae727eb9d28dad297020"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a959c5419b3dd34df5420ee83bbc54002"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a959c5419b3dd34df5420ee83bbc54002">mbedtls_pk_debug_type</a> { <a class="el" href="pk_8h.html#a959c5419b3dd34df5420ee83bbc54002a67f12e5586337f88ab7a314a454df8a6">MBEDTLS_PK_DEBUG_NONE</a> = 0, 
<a class="el" href="pk_8h.html#a959c5419b3dd34df5420ee83bbc54002a0dac32d7751890a7f2b548de57eb560d">MBEDTLS_PK_DEBUG_MPI</a>, 
<a class="el" href="pk_8h.html#a959c5419b3dd34df5420ee83bbc54002a53aa0f43ed7f0958c1347755b288c57f">MBEDTLS_PK_DEBUG_ECP</a>
 }<tr class="memdesc:a959c5419b3dd34df5420ee83bbc54002"><td class="mdescLeft">&#160;</td><td class="mdescRight">Types for interfacing with the debug module.  <a href="pk_8h.html#a959c5419b3dd34df5420ee83bbc54002">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a959c5419b3dd34df5420ee83bbc54002"><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:aadc2f32c8894f421712812d5f1f59568"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#aadc2f32c8894f421712812d5f1f59568">mbedtls_pk_rsa</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> pk)</td></tr>
<tr class="separator:aadc2f32c8894f421712812d5f1f59568"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b9c1b47e90acc7c01800edbfb8cff56"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a4b9c1b47e90acc7c01800edbfb8cff56">mbedtls_pk_ec</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> pk)</td></tr>
<tr class="separator:a4b9c1b47e90acc7c01800edbfb8cff56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05eb3e96499280b250cb71e2ef2d270b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a05eb3e96499280b250cb71e2ef2d270b">mbedtls_pk_info_from_type</a> (<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a> pk_type)</td></tr>
<tr class="memdesc:a05eb3e96499280b250cb71e2ef2d270b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return information associated with the given PK type.  <a href="#a05eb3e96499280b250cb71e2ef2d270b">More...</a><br /></td></tr>
<tr class="separator:a05eb3e96499280b250cb71e2ef2d270b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a999d1160bb30c03d0c4382c3a9b0aa89"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a999d1160bb30c03d0c4382c3a9b0aa89">mbedtls_pk_init</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx)</td></tr>
<tr class="memdesc:a999d1160bb30c03d0c4382c3a9b0aa89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a <a class="el" href="structmbedtls__pk__context.html" title="Public key container. ">mbedtls_pk_context</a> (as NONE)  <a href="#a999d1160bb30c03d0c4382c3a9b0aa89">More...</a><br /></td></tr>
<tr class="separator:a999d1160bb30c03d0c4382c3a9b0aa89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6a9786d96abfd73c4dff6814238feb9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#ac6a9786d96abfd73c4dff6814238feb9">mbedtls_pk_free</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx)</td></tr>
<tr class="memdesc:ac6a9786d96abfd73c4dff6814238feb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a <a class="el" href="structmbedtls__pk__context.html" title="Public key container. ">mbedtls_pk_context</a>.  <a href="#ac6a9786d96abfd73c4dff6814238feb9">More...</a><br /></td></tr>
<tr class="separator:ac6a9786d96abfd73c4dff6814238feb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d6cc2c1768cc6db883b08c3c0f10889"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a7d6cc2c1768cc6db883b08c3c0f10889">mbedtls_pk_setup</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const <a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a> *info)</td></tr>
<tr class="memdesc:a7d6cc2c1768cc6db883b08c3c0f10889"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a PK context with the information given and allocates the type-specific PK subcontext.  <a href="#a7d6cc2c1768cc6db883b08c3c0f10889">More...</a><br /></td></tr>
<tr class="separator:a7d6cc2c1768cc6db883b08c3c0f10889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab719d0b89ef0a49fef2bc8ba20e4726b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#ab719d0b89ef0a49fef2bc8ba20e4726b">mbedtls_pk_setup_rsa_alt</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, void *key, <a class="el" href="pk_8h.html#a01453ce20b7a8d47aaecd90ef9997e24">mbedtls_pk_rsa_alt_decrypt_func</a> decrypt_func, <a class="el" href="pk_8h.html#acbe016079288612bd9d7d9b337b22c66">mbedtls_pk_rsa_alt_sign_func</a> sign_func, <a class="el" href="pk_8h.html#ac1688b04ad105ba002dc47b79ded2e29">mbedtls_pk_rsa_alt_key_len_func</a> key_len_func)</td></tr>
<tr class="memdesc:ab719d0b89ef0a49fef2bc8ba20e4726b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize an RSA-alt context.  <a href="#ab719d0b89ef0a49fef2bc8ba20e4726b">More...</a><br /></td></tr>
<tr class="separator:ab719d0b89ef0a49fef2bc8ba20e4726b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a31083a590b155dd54d22cf618eefcc"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a4a31083a590b155dd54d22cf618eefcc">mbedtls_pk_get_bitlen</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx)</td></tr>
<tr class="memdesc:a4a31083a590b155dd54d22cf618eefcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size in bits of the underlying key.  <a href="#a4a31083a590b155dd54d22cf618eefcc">More...</a><br /></td></tr>
<tr class="separator:a4a31083a590b155dd54d22cf618eefcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10b85028a74324c9c581650dfee9dd4d"><td class="memItemLeft" align="right" valign="top">static size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a10b85028a74324c9c581650dfee9dd4d">mbedtls_pk_get_len</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx)</td></tr>
<tr class="memdesc:a10b85028a74324c9c581650dfee9dd4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length in bytes of the underlying key.  <a href="#a10b85028a74324c9c581650dfee9dd4d">More...</a><br /></td></tr>
<tr class="separator:a10b85028a74324c9c581650dfee9dd4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d72c66f5e78abe153bdf08874aaabf6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a2d72c66f5e78abe153bdf08874aaabf6">mbedtls_pk_can_do</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, <a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a> type)</td></tr>
<tr class="memdesc:a2d72c66f5e78abe153bdf08874aaabf6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tell if a context can do the operation given by type.  <a href="#a2d72c66f5e78abe153bdf08874aaabf6">More...</a><br /></td></tr>
<tr class="separator:a2d72c66f5e78abe153bdf08874aaabf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf1939cc1d89f6b9fd341b67d5241914"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#abf1939cc1d89f6b9fd341b67d5241914">mbedtls_pk_verify</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len)</td></tr>
<tr class="memdesc:abf1939cc1d89f6b9fd341b67d5241914"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify signature (including padding if relevant).  <a href="#abf1939cc1d89f6b9fd341b67d5241914">More...</a><br /></td></tr>
<tr class="separator:abf1939cc1d89f6b9fd341b67d5241914"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81f0c5e40b839f5eca676c2c2752036f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a81f0c5e40b839f5eca676c2c2752036f">mbedtls_pk_verify_ext</a> (<a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a> type, const void *options, <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len)</td></tr>
<tr class="memdesc:a81f0c5e40b839f5eca676c2c2752036f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify signature, with options. (Includes verification of the padding depending on type.)  <a href="#a81f0c5e40b839f5eca676c2c2752036f">More...</a><br /></td></tr>
<tr class="separator:a81f0c5e40b839f5eca676c2c2752036f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6055db23bfff422e65b3a41400344d15"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a6055db23bfff422e65b3a41400344d15">mbedtls_pk_sign</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, <a class="el" href="md_8h.html#a219313cb40503ec3e34a857ab98b2296">mbedtls_md_type_t</a> md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr>
<tr class="memdesc:a6055db23bfff422e65b3a41400344d15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make signature, including padding if relevant.  <a href="#a6055db23bfff422e65b3a41400344d15">More...</a><br /></td></tr>
<tr class="separator:a6055db23bfff422e65b3a41400344d15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a428e2ffa53bb9bb6cf000452881682c1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a428e2ffa53bb9bb6cf000452881682c1">mbedtls_pk_decrypt</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr>
<tr class="memdesc:a428e2ffa53bb9bb6cf000452881682c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypt message (including padding if relevant).  <a href="#a428e2ffa53bb9bb6cf000452881682c1">More...</a><br /></td></tr>
<tr class="separator:a428e2ffa53bb9bb6cf000452881682c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae543fd58f365e84cdfe3689ee2f10113"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#ae543fd58f365e84cdfe3689ee2f10113">mbedtls_pk_encrypt</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr>
<tr class="memdesc:ae543fd58f365e84cdfe3689ee2f10113"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypt message (including padding if relevant).  <a href="#ae543fd58f365e84cdfe3689ee2f10113">More...</a><br /></td></tr>
<tr class="separator:ae543fd58f365e84cdfe3689ee2f10113"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87f9989d6859e2dceb5e1d4c4491fdca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a87f9989d6859e2dceb5e1d4c4491fdca">mbedtls_pk_check_pair</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *pub, const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *prv)</td></tr>
<tr class="memdesc:a87f9989d6859e2dceb5e1d4c4491fdca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a public-private pair of keys matches.  <a href="#a87f9989d6859e2dceb5e1d4c4491fdca">More...</a><br /></td></tr>
<tr class="separator:a87f9989d6859e2dceb5e1d4c4491fdca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fb685e5a303eb149db2a61296986e14"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a0fb685e5a303eb149db2a61296986e14">mbedtls_pk_debug</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, <a class="el" href="structmbedtls__pk__debug__item.html">mbedtls_pk_debug_item</a> *items)</td></tr>
<tr class="memdesc:a0fb685e5a303eb149db2a61296986e14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Export debug information.  <a href="#a0fb685e5a303eb149db2a61296986e14">More...</a><br /></td></tr>
<tr class="separator:a0fb685e5a303eb149db2a61296986e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b0fb8d16905ec72515dd574b77a4518"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a1b0fb8d16905ec72515dd574b77a4518">mbedtls_pk_get_name</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx)</td></tr>
<tr class="memdesc:a1b0fb8d16905ec72515dd574b77a4518"><td class="mdescLeft">&#160;</td><td class="mdescRight">Access the type name.  <a href="#a1b0fb8d16905ec72515dd574b77a4518">More...</a><br /></td></tr>
<tr class="separator:a1b0fb8d16905ec72515dd574b77a4518"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab568e6594c1c4cffaa5046e1e0cada55"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#ab568e6594c1c4cffaa5046e1e0cada55">mbedtls_pk_get_type</a> (const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx)</td></tr>
<tr class="memdesc:ab568e6594c1c4cffaa5046e1e0cada55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the key type.  <a href="#ab568e6594c1c4cffaa5046e1e0cada55">More...</a><br /></td></tr>
<tr class="separator:ab568e6594c1c4cffaa5046e1e0cada55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a072d27dc4143bfd600786232f9417e08"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a072d27dc4143bfd600786232f9417e08">mbedtls_pk_parse_key</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const unsigned char *key, size_t keylen, const unsigned char *pwd, size_t pwdlen)</td></tr>
<tr class="memdesc:a072d27dc4143bfd600786232f9417e08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a private key in PEM or DER format.  <a href="#a072d27dc4143bfd600786232f9417e08">More...</a><br /></td></tr>
<tr class="separator:a072d27dc4143bfd600786232f9417e08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade680bf8e87df7ccc3bb36b52e43972b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#ade680bf8e87df7ccc3bb36b52e43972b">mbedtls_pk_parse_public_key</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const unsigned char *key, size_t keylen)</td></tr>
<tr class="memdesc:ade680bf8e87df7ccc3bb36b52e43972b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a public key in PEM or DER format.  <a href="#ade680bf8e87df7ccc3bb36b52e43972b">More...</a><br /></td></tr>
<tr class="separator:ade680bf8e87df7ccc3bb36b52e43972b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a935d710e542409462d0209f2381da83e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a935d710e542409462d0209f2381da83e">mbedtls_pk_parse_keyfile</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const char *path, const char *password)</td></tr>
<tr class="memdesc:a935d710e542409462d0209f2381da83e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load and parse a private key.  <a href="#a935d710e542409462d0209f2381da83e">More...</a><br /></td></tr>
<tr class="separator:a935d710e542409462d0209f2381da83e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5a0ae67100c005638bb74f575ee4ad6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#af5a0ae67100c005638bb74f575ee4ad6">mbedtls_pk_parse_public_keyfile</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, const char *path)</td></tr>
<tr class="memdesc:af5a0ae67100c005638bb74f575ee4ad6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load and parse a public key.  <a href="#af5a0ae67100c005638bb74f575ee4ad6">More...</a><br /></td></tr>
<tr class="separator:af5a0ae67100c005638bb74f575ee4ad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a698b57f2d3074eff3f8b668b12f4dbae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a698b57f2d3074eff3f8b668b12f4dbae">mbedtls_pk_write_key_der</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, unsigned char *buf, size_t size)</td></tr>
<tr class="memdesc:a698b57f2d3074eff3f8b668b12f4dbae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a private key to a PKCS#1 or SEC1 DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.  <a href="#a698b57f2d3074eff3f8b668b12f4dbae">More...</a><br /></td></tr>
<tr class="separator:a698b57f2d3074eff3f8b668b12f4dbae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5b7c3953ad6fe8be09d35508ee569f6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#af5b7c3953ad6fe8be09d35508ee569f6">mbedtls_pk_write_pubkey_der</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, unsigned char *buf, size_t size)</td></tr>
<tr class="memdesc:af5b7c3953ad6fe8be09d35508ee569f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a public key to a SubjectPublicKeyInfo DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.  <a href="#af5b7c3953ad6fe8be09d35508ee569f6">More...</a><br /></td></tr>
<tr class="separator:af5b7c3953ad6fe8be09d35508ee569f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a26c73637e652bbc1946e5d1e9eee3a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a7a26c73637e652bbc1946e5d1e9eee3a">mbedtls_pk_write_pubkey_pem</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, unsigned char *buf, size_t size)</td></tr>
<tr class="memdesc:a7a26c73637e652bbc1946e5d1e9eee3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a public key to a PEM string.  <a href="#a7a26c73637e652bbc1946e5d1e9eee3a">More...</a><br /></td></tr>
<tr class="separator:a7a26c73637e652bbc1946e5d1e9eee3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d199cfd9756b157b1270f2f1e170ac2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a9d199cfd9756b157b1270f2f1e170ac2">mbedtls_pk_write_key_pem</a> (<a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *ctx, unsigned char *buf, size_t size)</td></tr>
<tr class="memdesc:a9d199cfd9756b157b1270f2f1e170ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a private key to a PKCS#1 or SEC1 PEM string.  <a href="#a9d199cfd9756b157b1270f2f1e170ac2">More...</a><br /></td></tr>
<tr class="separator:a9d199cfd9756b157b1270f2f1e170ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a261a06b48443981316e19bd1c2c377f9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a261a06b48443981316e19bd1c2c377f9">mbedtls_pk_parse_subpubkey</a> (unsigned char **p, const unsigned char *end, <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *pk)</td></tr>
<tr class="memdesc:a261a06b48443981316e19bd1c2c377f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a SubjectPublicKeyInfo DER structure.  <a href="#a261a06b48443981316e19bd1c2c377f9">More...</a><br /></td></tr>
<tr class="separator:a261a06b48443981316e19bd1c2c377f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accf9dd8e63389e467a59a04f791efc0f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#accf9dd8e63389e467a59a04f791efc0f">mbedtls_pk_write_pubkey</a> (unsigned char **p, unsigned char *start, const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *key)</td></tr>
<tr class="memdesc:accf9dd8e63389e467a59a04f791efc0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a subjectPublicKey to ASN.1 data Note: function works backwards in data buffer.  <a href="#accf9dd8e63389e467a59a04f791efc0f">More...</a><br /></td></tr>
<tr class="separator:accf9dd8e63389e467a59a04f791efc0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a769bf6ab8da6168d83652b59f3d25802"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pk_8h.html#a769bf6ab8da6168d83652b59f3d25802">mbedtls_pk_load_file</a> (const char *path, unsigned char **buf, size_t *n)</td></tr>
<tr class="separator:a769bf6ab8da6168d83652b59f3d25802"><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>Public Key abstraction layer. </p>

<p class="definition">Definition in file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="acf55308a7cac0363ea25de294c8b633d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf55308a7cac0363ea25de294c8b633d">&#9670;&nbsp;</a></span>MBEDTLS_ERR_PK_ALLOC_FAILED</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_ALLOC_FAILED&#160;&#160;&#160;-0x3F80</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Memory allocation failed. </p>

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

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

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

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE&#160;&#160;&#160;-0x3980</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Unavailable feature, e.g. RSA disabled for RSA key. </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00065">65</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_FILE_IO_ERROR&#160;&#160;&#160;-0x3E00</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Read/write of file failed. </p>

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

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

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

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_INVALID_ALG&#160;&#160;&#160;-0x3A80</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The algorithm tag or value is invalid. </p>

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_INVALID_PUBKEY&#160;&#160;&#160;-0x3B00</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The pubkey tag or value is invalid (only RSA and EC are supported). </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00062">62</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_KEY_INVALID_FORMAT&#160;&#160;&#160;-0x3D00</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Invalid key tag or value. </p>

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_KEY_INVALID_VERSION&#160;&#160;&#160;-0x3D80</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Unsupported key version </p>

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_PASSWORD_MISMATCH&#160;&#160;&#160;-0x3B80</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Given private key password does not allow for correct decryption. </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00061">61</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_PASSWORD_REQUIRED&#160;&#160;&#160;-0x3C00</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Private key password can't be empty. </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00060">60</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH&#160;&#160;&#160;-0x3900</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The buffer contains a valid signature followed by more data. </p>

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_TYPE_MISMATCH&#160;&#160;&#160;-0x3F00</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Type mismatch, eg attempt to encrypt with an ECDSA key </p>

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE&#160;&#160;&#160;-0x3A00</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Elliptic curve is unsupported (only NIST curves are supported). </p>

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

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_ERR_PK_UNKNOWN_PK_ALG&#160;&#160;&#160;-0x3C80</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Key algorithm is unsupported (only RSA and EC are supported). </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00059">59</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MBEDTLS_PK_DEBUG_MAX_ITEMS&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Maximum number of item send for debugging, plus 1 </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00118">118</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="a5929d902e6b2dad79458c8583ca5c42d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5929d902e6b2dad79458c8583ca5c42d">&#9670;&nbsp;</a></span>mbedtls_pk_info_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a> <a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Public key information and operations. </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00123">123</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* mbedtls_pk_rsa_alt_decrypt_func) (void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Types for RSA-alt abstraction. </p>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00164">164</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef size_t(* mbedtls_pk_rsa_alt_key_len_func) (void *ctx)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00171">171</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* mbedtls_pk_rsa_alt_sign_func) (void *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>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00167">167</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a959c5419b3dd34df5420ee83bbc54002"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a959c5419b3dd34df5420ee83bbc54002">&#9670;&nbsp;</a></span>mbedtls_pk_debug_type</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="pk_8h.html#a959c5419b3dd34df5420ee83bbc54002">mbedtls_pk_debug_type</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Types for interfacing with the debug module. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a959c5419b3dd34df5420ee83bbc54002a67f12e5586337f88ab7a314a454df8a6"></a>MBEDTLS_PK_DEBUG_NONE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a959c5419b3dd34df5420ee83bbc54002a0dac32d7751890a7f2b548de57eb560d"></a>MBEDTLS_PK_DEBUG_MPI&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a959c5419b3dd34df5420ee83bbc54002a53aa0f43ed7f0958c1347755b288c57f"></a>MBEDTLS_PK_DEBUG_ECP&#160;</td><td class="fielddoc"></td></tr>
</table>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00100">100</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Public key types. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020a075b125b18a238567d2000c9433b9c79"></a>MBEDTLS_PK_NONE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020ac4fd7ca431c2e748df4ed0a324dd58c5"></a>MBEDTLS_PK_RSA&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020acc363effd0a7c9d6ac0c0660e25b258c"></a>MBEDTLS_PK_ECKEY&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020ac589ed0db52ed62be7e4f378bd04e3bf"></a>MBEDTLS_PK_ECKEY_DH&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020a665615a1098e56bbe747a477ee00ad61"></a>MBEDTLS_PK_ECDSA&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020abc435530cb0e61d0fdde8e1a8278e38f"></a>MBEDTLS_PK_RSA_ALT&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a3fe41eff5605ae727eb9d28dad297020a8b1bc181a5ea81a49b141925a68d8a92"></a>MBEDTLS_PK_RSASSA_PSS&#160;</td><td class="fielddoc"></td></tr>
</table>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00076">76</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_can_do </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Tell if a context can do the operation given by type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to test </td></tr>
    <tr><td class="paramname">type</td><td>Target type</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if context can't do the operations, 1 otherwise. </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_check_pair </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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__pk__context.html">mbedtls_pk_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>Check if a public-private pair of keys matches. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pub</td><td>Context holding a public key. </td></tr>
    <tr><td class="paramname">prv</td><td>Context holding a private (and public) key.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_debug </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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__pk__debug__item.html">mbedtls_pk_debug_item</a> *&#160;</td>
          <td class="paramname"><em>items</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Export debug information. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to use </td></tr>
    <tr><td class="paramname">items</td><td>Place to write debug items</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_decrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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">size_t&#160;</td>
          <td class="paramname"><em>ilen</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>olen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>osize</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>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Decrypt message (including padding if relevant). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>PK context to use - must hold a private key </td></tr>
    <tr><td class="paramname">input</td><td>Input to decrypt </td></tr>
    <tr><td class="paramname">ilen</td><td>Input size </td></tr>
    <tr><td class="paramname">output</td><td>Decrypted output </td></tr>
    <tr><td class="paramname">olen</td><td>Decrypted message length </td></tr>
    <tr><td class="paramname">osize</td><td>Size of the output buffer </td></tr>
    <tr><td class="paramname">f_rng</td><td>RNG function </td></tr>
    <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>For RSA keys, the default padding type is PKCS#1 v1.5.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or a specific error code. </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a>* mbedtls_pk_ec </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a>&#160;</td>
          <td class="paramname"><em>pk</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Quick access to an EC context inside a PK context.</p>
<dl class="section warning"><dt>Warning</dt><dd>You must make sure the PK context actually holds an EC context before using this function! </dd></dl>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00154">154</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_encrypt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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">size_t&#160;</td>
          <td class="paramname"><em>ilen</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>olen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>osize</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>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encrypt message (including padding if relevant). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>PK context to use </td></tr>
    <tr><td class="paramname">input</td><td>Message to encrypt </td></tr>
    <tr><td class="paramname">ilen</td><td>Message size </td></tr>
    <tr><td class="paramname">output</td><td>Encrypted output </td></tr>
    <tr><td class="paramname">olen</td><td>Encrypted output length </td></tr>
    <tr><td class="paramname">osize</td><td>Size of the output buffer </td></tr>
    <tr><td class="paramname">f_rng</td><td>RNG function </td></tr>
    <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>For RSA keys, the default padding type is PKCS#1 v1.5.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or a specific error code. </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

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

<p>Free a <a class="el" href="structmbedtls__pk__context.html" title="Public key container. ">mbedtls_pk_context</a>. </p>

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

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

<p>Get the size in bits of the underlying key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to use</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Key size in bits, or 0 on error </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static size_t mbedtls_pk_get_len </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the length in bytes of the underlying key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to use</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Key length in bytes, or 0 on error </dd></dl>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00245">245</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

<p class="reference">References <a class="el" href="pk_8h.html#a2d72c66f5e78abe153bdf08874aaabf6">mbedtls_pk_can_do()</a>, <a class="el" href="pk_8h.html#a87f9989d6859e2dceb5e1d4c4491fdca">mbedtls_pk_check_pair()</a>, <a class="el" href="pk_8h.html#a0fb685e5a303eb149db2a61296986e14">mbedtls_pk_debug()</a>, <a class="el" href="pk_8h.html#a428e2ffa53bb9bb6cf000452881682c1">mbedtls_pk_decrypt()</a>, <a class="el" href="pk_8h.html#ae543fd58f365e84cdfe3689ee2f10113">mbedtls_pk_encrypt()</a>, <a class="el" href="pk_8h.html#a4a31083a590b155dd54d22cf618eefcc">mbedtls_pk_get_bitlen()</a>, <a class="el" href="pk_8h.html#a1b0fb8d16905ec72515dd574b77a4518">mbedtls_pk_get_name()</a>, <a class="el" href="pk_8h.html#ab568e6594c1c4cffaa5046e1e0cada55">mbedtls_pk_get_type()</a>, <a class="el" href="pk_8h.html#a769bf6ab8da6168d83652b59f3d25802">mbedtls_pk_load_file()</a>, <a class="el" href="pk_8h.html#a072d27dc4143bfd600786232f9417e08">mbedtls_pk_parse_key()</a>, <a class="el" href="pk_8h.html#a935d710e542409462d0209f2381da83e">mbedtls_pk_parse_keyfile()</a>, <a class="el" href="pk_8h.html#ade680bf8e87df7ccc3bb36b52e43972b">mbedtls_pk_parse_public_key()</a>, <a class="el" href="pk_8h.html#af5a0ae67100c005638bb74f575ee4ad6">mbedtls_pk_parse_public_keyfile()</a>, <a class="el" href="pk_8h.html#a261a06b48443981316e19bd1c2c377f9">mbedtls_pk_parse_subpubkey()</a>, <a class="el" href="pk_8h.html#a6055db23bfff422e65b3a41400344d15">mbedtls_pk_sign()</a>, <a class="el" href="pk_8h.html#abf1939cc1d89f6b9fd341b67d5241914">mbedtls_pk_verify()</a>, <a class="el" href="pk_8h.html#a81f0c5e40b839f5eca676c2c2752036f">mbedtls_pk_verify_ext()</a>, <a class="el" href="pk_8h.html#a698b57f2d3074eff3f8b668b12f4dbae">mbedtls_pk_write_key_der()</a>, <a class="el" href="pk_8h.html#a9d199cfd9756b157b1270f2f1e170ac2">mbedtls_pk_write_key_pem()</a>, <a class="el" href="pk_8h.html#accf9dd8e63389e467a59a04f791efc0f">mbedtls_pk_write_pubkey()</a>, <a class="el" href="pk_8h.html#af5b7c3953ad6fe8be09d35508ee569f6">mbedtls_pk_write_pubkey_der()</a>, and <a class="el" href="pk_8h.html#a7a26c73637e652bbc1946e5d1e9eee3a">mbedtls_pk_write_pubkey_pem()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* mbedtls_pk_get_name </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Access the type name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to use</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Type name on success, or "invalid PK" </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a> mbedtls_pk_get_type </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the key type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to use</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Type on success, or MBEDTLS_PK_NONE </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a>* mbedtls_pk_info_from_type </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a>&#160;</td>
          <td class="paramname"><em>pk_type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return information associated with the given PK type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pk_type</td><td>PK type to search for.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The PK info associated with the type or NULL if not found. </dd></dl>

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

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

<p>Initialize a <a class="el" href="structmbedtls__pk__context.html" title="Public key container. ">mbedtls_pk_context</a> (as NONE) </p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_load_file </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_parse_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>keylen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>pwd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>pwdlen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parse a private key in PEM or DER format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>key to be initialized </td></tr>
    <tr><td class="paramname">key</td><td>input buffer </td></tr>
    <tr><td class="paramname">keylen</td><td>size of the buffer (including the terminating null byte for PEM data) </td></tr>
    <tr><td class="paramname">pwd</td><td>password for decryption (optional) </td></tr>
    <tr><td class="paramname">pwdlen</td><td>size of the password</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>On entry, ctx must be empty, either freshly initialised with <a class="el" href="pk_8h.html#a999d1160bb30c03d0c4382c3a9b0aa89" title="Initialize a mbedtls_pk_context (as NONE) ">mbedtls_pk_init()</a> or reset with <a class="el" href="pk_8h.html#ac6a9786d96abfd73c4dff6814238feb9" title="Free a mbedtls_pk_context. ">mbedtls_pk_free()</a>. If you need a specific key type, check the result with <a class="el" href="pk_8h.html#a2d72c66f5e78abe153bdf08874aaabf6" title="Tell if a context can do the operation given by type. ">mbedtls_pk_can_do()</a>.</dd>
<dd>
The key is also checked for correctness.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific PK or PEM error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_parse_keyfile </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>password</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Load and parse a private key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>key to be initialized </td></tr>
    <tr><td class="paramname">path</td><td>filename to read the private key from </td></tr>
    <tr><td class="paramname">password</td><td>password to decrypt the file (can be NULL)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>On entry, ctx must be empty, either freshly initialised with <a class="el" href="pk_8h.html#a999d1160bb30c03d0c4382c3a9b0aa89" title="Initialize a mbedtls_pk_context (as NONE) ">mbedtls_pk_init()</a> or reset with <a class="el" href="pk_8h.html#ac6a9786d96abfd73c4dff6814238feb9" title="Free a mbedtls_pk_context. ">mbedtls_pk_free()</a>. If you need a specific key type, check the result with <a class="el" href="pk_8h.html#a2d72c66f5e78abe153bdf08874aaabf6" title="Tell if a context can do the operation given by type. ">mbedtls_pk_can_do()</a>.</dd>
<dd>
The key is also checked for correctness.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific PK or PEM error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_parse_public_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>keylen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parse a public key in PEM or DER format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>key to be initialized </td></tr>
    <tr><td class="paramname">key</td><td>input buffer </td></tr>
    <tr><td class="paramname">keylen</td><td>size of the buffer (including the terminating null byte for PEM data)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>On entry, ctx must be empty, either freshly initialised with <a class="el" href="pk_8h.html#a999d1160bb30c03d0c4382c3a9b0aa89" title="Initialize a mbedtls_pk_context (as NONE) ">mbedtls_pk_init()</a> or reset with <a class="el" href="pk_8h.html#ac6a9786d96abfd73c4dff6814238feb9" title="Free a mbedtls_pk_context. ">mbedtls_pk_free()</a>. If you need a specific key type, check the result with <a class="el" href="pk_8h.html#a2d72c66f5e78abe153bdf08874aaabf6" title="Tell if a context can do the operation given by type. ">mbedtls_pk_can_do()</a>.</dd>
<dd>
The key is also checked for correctness.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific PK or PEM error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_parse_public_keyfile </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Load and parse a public key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>key to be initialized </td></tr>
    <tr><td class="paramname">path</td><td>filename to read the public key from</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>On entry, ctx must be empty, either freshly initialised with <a class="el" href="pk_8h.html#a999d1160bb30c03d0c4382c3a9b0aa89" title="Initialize a mbedtls_pk_context (as NONE) ">mbedtls_pk_init()</a> or reset with <a class="el" href="pk_8h.html#ac6a9786d96abfd73c4dff6814238feb9" title="Free a mbedtls_pk_context. ">mbedtls_pk_free()</a>. If you need a specific key type, check the result with <a class="el" href="pk_8h.html#a2d72c66f5e78abe153bdf08874aaabf6" title="Tell if a context can do the operation given by type. ">mbedtls_pk_can_do()</a>.</dd>
<dd>
The key is also checked for correctness.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific PK or PEM error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_parse_subpubkey </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">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>pk</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parse a SubjectPublicKeyInfo DER structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>the position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>end of the buffer </td></tr>
    <tr><td class="paramname">pk</td><td>the key to fill</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific PK error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="structmbedtls__rsa__context.html">mbedtls_rsa_context</a>* mbedtls_pk_rsa </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a>&#160;</td>
          <td class="paramname"><em>pk</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Quick access to an RSA context inside a PK context.</p>
<dl class="section warning"><dt>Warning</dt><dd>You must make sure the PK context actually holds an RSA context before using this function! </dd></dl>

<p class="definition">Definition at line <a class="el" href="pk_8h_source.html#l00141">141</a> of file <a class="el" href="pk_8h_source.html">pk.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_setup </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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="pk_8h.html#a5929d902e6b2dad79458c8583ca5c42d">mbedtls_pk_info_t</a> *&#160;</td>
          <td class="paramname"><em>info</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize a PK context with the information given and allocates the type-specific PK subcontext. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to initialize. Must be empty (type NONE). </td></tr>
    <tr><td class="paramname">info</td><td>Information to use</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input, MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>For contexts holding an RSA-alt key, use <code><a class="el" href="pk_8h.html#ab719d0b89ef0a49fef2bc8ba20e4726b" title="Initialize an RSA-alt context. ">mbedtls_pk_setup_rsa_alt()</a></code> instead. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_setup_rsa_alt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pk_8h.html#a01453ce20b7a8d47aaecd90ef9997e24">mbedtls_pk_rsa_alt_decrypt_func</a>&#160;</td>
          <td class="paramname"><em>decrypt_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pk_8h.html#acbe016079288612bd9d7d9b337b22c66">mbedtls_pk_rsa_alt_sign_func</a>&#160;</td>
          <td class="paramname"><em>sign_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pk_8h.html#ac1688b04ad105ba002dc47b79ded2e29">mbedtls_pk_rsa_alt_key_len_func</a>&#160;</td>
          <td class="paramname"><em>key_len_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize an RSA-alt context. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>Context to initialize. Must be empty (type NONE). </td></tr>
    <tr><td class="paramname">key</td><td>RSA key pointer </td></tr>
    <tr><td class="paramname">decrypt_func</td><td>Decryption function </td></tr>
    <tr><td class="paramname">sign_func</td><td>Signing function </td></tr>
    <tr><td class="paramname">key_len_func</td><td>Function returning key length in bytes</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or MBEDTLS_ERR_PK_BAD_INPUT_DATA if the context wasn't already initialized as RSA_ALT.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function replaces <code><a class="el" href="pk_8h.html#a7d6cc2c1768cc6db883b08c3c0f10889" title="Initialize a PK context with the information given and allocates the type-specific PK subcontext...">mbedtls_pk_setup()</a></code> for RSA-alt. </dd></dl>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_sign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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="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">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>hash_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>sig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>sig_len</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>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Make signature, including padding if relevant. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>PK context to use - must hold a private key </td></tr>
    <tr><td class="paramname">md_alg</td><td>Hash algorithm used (see notes) </td></tr>
    <tr><td class="paramname">hash</td><td>Hash of the message to sign </td></tr>
    <tr><td class="paramname">hash_len</td><td>Hash length or 0 (see notes) </td></tr>
    <tr><td class="paramname">sig</td><td>Place to write the signature </td></tr>
    <tr><td class="paramname">sig_len</td><td>Number of bytes written </td></tr>
    <tr><td class="paramname">f_rng</td><td>RNG function </td></tr>
    <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or a specific error code.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>For RSA keys, the default padding type is PKCS#1 v1.5. There is no interface in the PK module to make RSASSA-PSS signatures yet.</dd>
<dd>
If hash_len is 0, then the length associated with md_alg is used instead, or an error returned if it is invalid.</dd>
<dd>
For RSA, md_alg may be MBEDTLS_MD_NONE if hash_len != 0. For ECDSA, md_alg may never be MBEDTLS_MD_NONE. </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_verify </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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="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">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>hash_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>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>sig_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Verify signature (including padding if relevant). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>PK context to use </td></tr>
    <tr><td class="paramname">md_alg</td><td>Hash algorithm used (see notes) </td></tr>
    <tr><td class="paramname">hash</td><td>Hash of the message to sign </td></tr>
    <tr><td class="paramname">hash_len</td><td>Hash length or 0 (see notes) </td></tr>
    <tr><td class="paramname">sig</td><td>Signature to verify </td></tr>
    <tr><td class="paramname">sig_len</td><td>Signature length</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success (signature is valid), <a class="el" href="pk_8h.html#abce78b0c7f04018824b70b816e091dc0">MBEDTLS_ERR_PK_SIG_LEN_MISMATCH</a> if there is a valid signature in sig but its length is less than <code>siglen</code>, or a specific error code.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>For RSA keys, the default padding type is PKCS#1 v1.5. Use <code>mbedtls_pk_verify_ext</code>( MBEDTLS_PK_RSASSA_PSS, ... ) to verify RSASSA_PSS signatures.</dd>
<dd>
If hash_len is 0, then the length associated with md_alg is used instead, or an error returned if it is invalid.</dd>
<dd>
md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0 </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_verify_ext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pk_8h.html#a3fe41eff5605ae727eb9d28dad297020">mbedtls_pk_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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="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">const unsigned char *&#160;</td>
          <td class="paramname"><em>hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>hash_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>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>sig_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Verify signature, with options. (Includes verification of the padding depending on type.) </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>Signature type (inc. possible padding type) to verify </td></tr>
    <tr><td class="paramname">options</td><td>Pointer to type-specific options, or NULL </td></tr>
    <tr><td class="paramname">ctx</td><td>PK context to use </td></tr>
    <tr><td class="paramname">md_alg</td><td>Hash algorithm used (see notes) </td></tr>
    <tr><td class="paramname">hash</td><td>Hash of the message to sign </td></tr>
    <tr><td class="paramname">hash_len</td><td>Hash length or 0 (see notes) </td></tr>
    <tr><td class="paramname">sig</td><td>Signature to verify </td></tr>
    <tr><td class="paramname">sig_len</td><td>Signature length</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success (signature is valid), <a class="el" href="pk_8h.html#a7a7fb7cb156476722c09de42368156dc">MBEDTLS_ERR_PK_TYPE_MISMATCH</a> if the PK context can't be used for this type of signatures, <a class="el" href="pk_8h.html#abce78b0c7f04018824b70b816e091dc0">MBEDTLS_ERR_PK_SIG_LEN_MISMATCH</a> if there is a valid signature in sig but its length is less than <code>siglen</code>, or a specific error code.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>If hash_len is 0, then the length associated with md_alg is used instead, or an error returned if it is invalid.</dd>
<dd>
md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0</dd>
<dd>
If type is MBEDTLS_PK_RSASSA_PSS, then options must point to a <a class="el" href="structmbedtls__pk__rsassa__pss__options.html" title="Options for RSASSA-PSS signature verification. See mbedtls_rsa_rsassa_pss_verify_ext() ...">mbedtls_pk_rsassa_pss_options</a> structure, otherwise it must be NULL. </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_write_key_der </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write a private key to a PKCS#1 or SEC1 DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>private to write away </td></tr>
    <tr><td class="paramname">buf</td><td>buffer to write to </td></tr>
    <tr><td class="paramname">size</td><td>size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>length of data written if successful, or a specific error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_write_key_pem </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write a private key to a PKCS#1 or SEC1 PEM string. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>private to write away </td></tr>
    <tr><td class="paramname">buf</td><td>buffer to write to </td></tr>
    <tr><td class="paramname">size</td><td>size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_write_pubkey </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">unsigned char *&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_context</a> *&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write a subjectPublicKey to ASN.1 data Note: function works backwards in data buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>reference to current position pointer </td></tr>
    <tr><td class="paramname">start</td><td>start of the buffer (for bounds-checking) </td></tr>
    <tr><td class="paramname">key</td><td>public key to write away</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the length written or a negative error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_write_pubkey_der </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write a public key to a SubjectPublicKeyInfo DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>public key to write away </td></tr>
    <tr><td class="paramname">buf</td><td>buffer to write to </td></tr>
    <tr><td class="paramname">size</td><td>size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>length of data written if successful, or a specific error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int mbedtls_pk_write_pubkey_pem </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmbedtls__pk__context.html">mbedtls_pk_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>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write a public key to a PEM string. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>public key to write away </td></tr>
    <tr><td class="paramname">buf</td><td>buffer to write to </td></tr>
    <tr><td class="paramname">size</td><td>size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, or a specific error code </dd></dl>

<p class="reference">Referenced by <a class="el" href="pk_8h_source.html#l00245">mbedtls_pk_get_len()</a>.</p>

</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>