Files
6CAR/doc/Doxygen/html/sm9_8h.html
2026-04-18 09:16:58 +08:00

1135 lines
41 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>SemiDrive SSDK Appication Program Interface: Z:/01-Code/06-SSDK-DEV-Firewall/ssdk/drivers/include/crypto/cacc/pke/sm9.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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.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 id="projectrow">
<td id="projectalign">
<div id="projectname">SemiDrive SSDK Appication Program Interface<span id="projectnumber">&#160;PTG3.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_14bc92f4b96c8519b376567118ac28b3.html">drivers</a></li><li class="navelem"><a class="el" href="dir_ee023d43c33bfccc31aa50a48a76892b.html">include</a></li><li class="navelem"><a class="el" href="dir_e08589e132e001d864753e5516cdc279.html">crypto</a></li><li class="navelem"><a class="el" href="dir_610f8d7993e1efb130988b94d1ce0406.html">cacc</a></li><li class="navelem"><a class="el" href="dir_5d0a9f542d396d1efa3a380bc8406556.html">pke</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">sm9.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="pke_8h_source.html">pke.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="trng_8h_source.html">trng.h</a>&gt;</code><br />
</div>
<p><a href="sm9_8h_source.html">Go to the source code of this file.</a></p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a145f26d433eb628d8fff090f6ae01bbc" name="a145f26d433eb628d8fff090f6ae01bbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a145f26d433eb628d8fff090f6ae01bbc">&#9670;&nbsp;</a></span>SM9_MAX_ENC_K2_BYTE_LEN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SM9_MAX_ENC_K2_BYTE_LEN&#160;&#160;&#160;(0x40)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad82c20ec1c99f4fc212aaffcff5bf809" name="ad82c20ec1c99f4fc212aaffcff5bf809"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad82c20ec1c99f4fc212aaffcff5bf809">&#9670;&nbsp;</a></span>SM9_MAX_ID_BYTE_LEN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SM9_MAX_ID_BYTE_LEN&#160;&#160;&#160;(1 &lt;&lt; 13)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2bd1904c28861e202de08465cb91fb7e" name="a2bd1904c28861e202de08465cb91fb7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bd1904c28861e202de08465cb91fb7e">&#9670;&nbsp;</a></span>SM9_MAX_MSG_BYTE_LEN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SM9_MAX_MSG_BYTE_LEN&#160;&#160;&#160;(0xFFFFFF9F)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae2433cd4afb731ae0f10efcadbebe4c1" name="ae2433cd4afb731ae0f10efcadbebe4c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2433cd4afb731ae0f10efcadbebe4c1">&#9670;&nbsp;</a></span>SM9_POINT_NOT_COMPRESSED</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SM9_POINT_NOT_COMPRESSED&#160;&#160;&#160;(0x04)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ab4952a8c305b7811522cc0eb3e543560" name="ab4952a8c305b7811522cc0eb3e543560"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4952a8c305b7811522cc0eb3e543560">&#9670;&nbsp;</a></span>sm9_enc_padding_e</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="sm9_8h.html#ab4952a8c305b7811522cc0eb3e543560">sm9_enc_padding_e</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ab4952a8c305b7811522cc0eb3e543560a727d31e25cc717e26f6de31c650b8db3" name="ab4952a8c305b7811522cc0eb3e543560a727d31e25cc717e26f6de31c650b8db3"></a>SM9_ENC_NO_PADDING&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab4952a8c305b7811522cc0eb3e543560a112a3c1f60d2331b49e821f8f5d76c2f" name="ab4952a8c305b7811522cc0eb3e543560a112a3c1f60d2331b49e821f8f5d76c2f"></a>SM9_ENC_PKCS7_PADDING&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab4952a8c305b7811522cc0eb3e543560a51d1c3559521a461af488bafbd8f47af" name="ab4952a8c305b7811522cc0eb3e543560a51d1c3559521a461af488bafbd8f47af"></a>SM9_ENC_MAX_PADDING&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="a1172e44643727824ac8069b0193797f8" name="a1172e44643727824ac8069b0193797f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1172e44643727824ac8069b0193797f8">&#9670;&nbsp;</a></span>sm9_enc_type_e</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="sm9_8h.html#a1172e44643727824ac8069b0193797f8">sm9_enc_type_e</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1172e44643727824ac8069b0193797f8ac6247fede6d14d2b05b8177fab327f47" name="a1172e44643727824ac8069b0193797f8ac6247fede6d14d2b05b8177fab327f47"></a>SM9_ENC_KDF_STREAM_CIPHER&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1172e44643727824ac8069b0193797f8abdb2d21a8eaee1894a479df1038f0683" name="a1172e44643727824ac8069b0193797f8abdb2d21a8eaee1894a479df1038f0683"></a>SM9_ENC_KDF_BLOCK_CIPHER&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="a4e60e38a746a0f838613d8b290702095" name="a4e60e38a746a0f838613d8b290702095"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e60e38a746a0f838613d8b290702095">&#9670;&nbsp;</a></span>sm9_exchange_role_e</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="sm9_8h.html#a4e60e38a746a0f838613d8b290702095">sm9_exchange_role_e</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4e60e38a746a0f838613d8b290702095a241bbf25d686bed83efa4bab2056320b" name="a4e60e38a746a0f838613d8b290702095a241bbf25d686bed83efa4bab2056320b"></a>SM9_ROLE_SPONSOR&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4e60e38a746a0f838613d8b290702095abbdfabbf589deeae8b9672b1dc1281f3" name="a4e60e38a746a0f838613d8b290702095abbdfabbf589deeae8b9672b1dc1281f3"></a>SM9_ROLE_RESPONSOR&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="aa82354c4b66f655564635667e1113da7" name="aa82354c4b66f655564635667e1113da7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa82354c4b66f655564635667e1113da7">&#9670;&nbsp;</a></span>SM9_RET_CODE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="sm9_8h.html#aa82354c4b66f655564635667e1113da7">SM9_RET_CODE</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7aab4e1683a03786886bc8f080edd0cabd" name="aa82354c4b66f655564635667e1113da7aab4e1683a03786886bc8f080edd0cabd"></a>SM9_SUCCESS&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7a85a6f689b164fe6c0cf8d684dade91f1" name="aa82354c4b66f655564635667e1113da7a85a6f689b164fe6c0cf8d684dade91f1"></a>SM9_BUFFER_NULL&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7ae9ab5906647dbcd64fec15c6c9f2210e" name="aa82354c4b66f655564635667e1113da7ae9ab5906647dbcd64fec15c6c9f2210e"></a>SM9_NOT_ON_CURVE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7a666d08a99211ece7972b022c2afa107f" name="aa82354c4b66f655564635667e1113da7a666d08a99211ece7972b022c2afa107f"></a>SM9_EXCHANGE_ROLE_INVALID&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7a346a8d69bae4d62d8219bc3229e767cc" name="aa82354c4b66f655564635667e1113da7a346a8d69bae4d62d8219bc3229e767cc"></a>SM9_INPUT_INVALID&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7adbaf58b3aa0b338255ec39b25d7db55a" name="aa82354c4b66f655564635667e1113da7adbaf58b3aa0b338255ec39b25d7db55a"></a>SM9_ZERO_ALL&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7a6fba05a057602b40ce5923f9c34c2def" name="aa82354c4b66f655564635667e1113da7a6fba05a057602b40ce5923f9c34c2def"></a>SM9_INTEGER_TOO_BIG&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7aa24703320ac1cf0dc060e7d51f7c2b8b" name="aa82354c4b66f655564635667e1113da7aa24703320ac1cf0dc060e7d51f7c2b8b"></a>SM9_VERIFY_FAILED&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7a24e6f6b8b07f91245a1279511839973b" name="aa82354c4b66f655564635667e1113da7a24e6f6b8b07f91245a1279511839973b"></a>SM9_IN_OUT_SAME_BUFFER&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa82354c4b66f655564635667e1113da7af4ca1b7797226ad1aedcd87e4b0bc0b0" name="aa82354c4b66f655564635667e1113da7af4ca1b7797226ad1aedcd87e4b0bc0b0"></a>SM9_DECRY_VERIFY_FAILED&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a3bafe105d3c8f5c5866602f631e93280" name="a3bafe105d3c8f5c5866602f631e93280"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bafe105d3c8f5c5866602f631e93280">&#9670;&nbsp;</a></span>sm9_dec()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_dec </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>C</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>CByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>deB</em>[128], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="sm9_8h.html#a1172e44643727824ac8069b0193797f8">sm9_enc_type_e</a>&#160;</td>
<td class="paramname"><em>enc_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="sm9_8h.html#ab4952a8c305b7811522cc0eb3e543560">sm9_enc_padding_e</a>&#160;</td>
<td class="paramname"><em>padding_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>K2ByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>M</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>MByteLen</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aafd4253d06b508c5c606d00cb9f89086" name="aafd4253d06b508c5c606d00cb9f89086"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafd4253d06b508c5c606d00cb9f89086">&#9670;&nbsp;</a></span>sm9_enc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_enc </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>M</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>MByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>r</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="sm9_8h.html#a1172e44643727824ac8069b0193797f8">sm9_enc_type_e</a>&#160;</td>
<td class="paramname"><em>enc_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="sm9_8h.html#ab4952a8c305b7811522cc0eb3e543560">sm9_enc_padding_e</a>&#160;</td>
<td class="paramname"><em>padding_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>K2ByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>C</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>CByteLen</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6525a19d0bd70b5c62d09270d024fc5d" name="a6525a19d0bd70b5c62d09270d024fc5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6525a19d0bd70b5c62d09270d024fc5d">&#9670;&nbsp;</a></span>sm9_enc_gen_mastKeyPair()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_enc_gen_mastKeyPair </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ke</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7df8d9a245a053299352242d64954297" name="a7df8d9a245a053299352242d64954297"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7df8d9a245a053299352242d64954297">&#9670;&nbsp;</a></span>sm9_enc_gen_mastPubKey_from_mastPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_enc_gen_mastPubKey_from_mastPriKey </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ke</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8e5674a7ad9eb245fc36d78c8ee948d3" name="a8e5674a7ad9eb245fc36d78c8ee948d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e5674a7ad9eb245fc36d78c8ee948d3">&#9670;&nbsp;</a></span>sm9_enc_gen_userPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_enc_gen_userPriKey </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ke</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>deB</em>[128]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a39ee657b44fa2a7b3bba73d860d45b44" name="a39ee657b44fa2a7b3bba73d860d45b44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39ee657b44fa2a7b3bba73d860d45b44">&#9670;&nbsp;</a></span>sm9_exchangekey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_exchangekey </td>
<td>(</td>
<td class="paramtype"><a class="el" href="sm9_8h.html#a4e60e38a746a0f838613d8b290702095">sm9_exchange_role_e</a>&#160;</td>
<td class="paramname"><em>role</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDA_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>deA</em>[128], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>rA</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>RA</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>RB</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>kByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>KA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>S1</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>SA</em>[32]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abcfa151501a39be09c2632af80b4761e" name="abcfa151501a39be09c2632af80b4761e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcfa151501a39be09c2632af80b4761e">&#9670;&nbsp;</a></span>sm9_exckey_gen_mastKeyPair()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_exckey_gen_mastKeyPair </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ke</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a27cfe070cf162eff8e45106d8f2824bd" name="a27cfe070cf162eff8e45106d8f2824bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27cfe070cf162eff8e45106d8f2824bd">&#9670;&nbsp;</a></span>sm9_exckey_gen_mastPubKey_from_mastPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_exckey_gen_mastPubKey_from_mastPriKey </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ke</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a55f8f3c6686b05084c6ac5eb26859cc9" name="a55f8f3c6686b05084c6ac5eb26859cc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55f8f3c6686b05084c6ac5eb26859cc9">&#9670;&nbsp;</a></span>sm9_exckey_gen_tmpKeyPair()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_exckey_gen_tmpKeyPair </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>rA</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>RA</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8b7025c2c86a44138aa7d131814061e4" name="a8b7025c2c86a44138aa7d131814061e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b7025c2c86a44138aa7d131814061e4">&#9670;&nbsp;</a></span>sm9_exckey_gen_tmpPubKey_from_tmpPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_exckey_gen_tmpPubKey_from_tmpPriKey </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>rA</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>RA</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ace36e22c3e96629163fdd55c14888633" name="ace36e22c3e96629163fdd55c14888633"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace36e22c3e96629163fdd55c14888633">&#9670;&nbsp;</a></span>sm9_exckey_gen_userPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_exckey_gen_userPriKey </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDA_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ke</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>deA</em>[128]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aeafeef68139f464929d4218b04d1ade1" name="aeafeef68139f464929d4218b04d1ade1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeafeef68139f464929d4218b04d1ade1">&#9670;&nbsp;</a></span>sm9_sign()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_sign </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>M</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>MByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_s</em>[128], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>dsA</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>r</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>h</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>S</em>[65]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6a13a7562cefe818d572add8fe54dc1c" name="a6a13a7562cefe818d572add8fe54dc1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a13a7562cefe818d572add8fe54dc1c">&#9670;&nbsp;</a></span>sm9_sign_gen_mastKeyPair()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_sign_gen_mastKeyPair </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ks</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>Ppub_s</em>[128]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0cddd990d23da073a5563c381b8597c4" name="a0cddd990d23da073a5563c381b8597c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cddd990d23da073a5563c381b8597c4">&#9670;&nbsp;</a></span>sm9_sign_gen_mastPubKey_from_mastPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_sign_gen_mastPubKey_from_mastPriKey </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ks</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>Ppub_s</em>[128]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac6ef662365503610c5b9412f3d8845c1" name="ac6ef662365503610c5b9412f3d8845c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6ef662365503610c5b9412f3d8845c1">&#9670;&nbsp;</a></span>sm9_sign_gen_userPriKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_sign_gen_userPriKey </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDA_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>ks</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>dsA</em>[64]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae967f97575e8959f2ee15868007fbb18" name="ae967f97575e8959f2ee15868007fbb18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae967f97575e8959f2ee15868007fbb18">&#9670;&nbsp;</a></span>sm9_unwrap_key()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_unwrap_key </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>deB</em>[128], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>C</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>KByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>K</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afedd41ef02f36a20b831dc7baafe9911" name="afedd41ef02f36a20b831dc7baafe9911"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afedd41ef02f36a20b831dc7baafe9911">&#9670;&nbsp;</a></span>sm9_verify()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_verify </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>M</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>MByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDA</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDA_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_s</em>[128], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>h</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>S</em>[65]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac0dbbfab1bf2e5dc6223ab58f182fa80" name="ac0dbbfab1bf2e5dc6223ab58f182fa80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0dbbfab1bf2e5dc6223ab58f182fa80">&#9670;&nbsp;</a></span>sm9_wrap_key()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t sm9_wrap_key </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>IDB</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IDB_byteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>hid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>Ppub_e</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>r</em>[32], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>C</em>[64], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>KByteLen</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>K</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>