374 lines
26 KiB
HTML
374 lines
26 KiB
HTML
<!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.6"/>
|
|
<title>Kinetis SDK v.2.0 API Reference Manual: LTC: LP Trusted Cryptography</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="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
$(window).load(resizeHeight);
|
|
</script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { searchBox.OnSelectItem(0); });
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="customdoxygen.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="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">Kinetis SDK v.2.0 API Reference Manual
|
|
 <span id="projectnumber">Rev. 0</span>
|
|
</div>
|
|
<div id="projectbrief">Freescale Semiconductor, Inc.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.6 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="modules.html"><span>API Reference</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('group__ltc__driver.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Pages</a></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 class="header">
|
|
<div class="summary">
|
|
<a href="#groups">Modules</a> |
|
|
<a href="#files">Files</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">LTC: LP Trusted Cryptography</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
|
|
<p>The Kinetis SDK provides the Peripheral driver for the LP Trusted Cryptography (LTC) module of Kinetis devices. LP Trusted Cryptography is a set of cryptograhpic hardware accelerator engines that share common registers. LTC architecture can support AES, DES, 3DES, MDHA (SHA), RSA and ECC. Actual list of implemented cryptograhpic hardware accelerator engines depends on specific Kinetis microcontroller.</p>
|
|
<p>The driver comprises two sets of API functions.</p>
|
|
<p>In the first set, blocking synchronous APIs are provided, for all operations supported by LTC hardware. The LTC operations are complete (and results are made availabe for further usage) when a function returns. When called, these functions don't return until an LTC operation is complete. These functions use main CPU for simple polling loops to determine operation complete or error status and also for plaintext or ciphertext data movements. The driver functions are not re-entrant. These functions provide typical interface to upper layer or application software.</p>
|
|
<p>In the second set, DMA support for symmetric LTC processing is provided, for AES and DES engines. APIs in the second set use DMA for data movement to and from the LTC input and output FIFOs. By using these functions, main CPU is not used for plaintext or ciphertext data movements (DMA is used instead). Thus, CPU processing power can be used for other application tasks, at cost of decreased maximum data throughput (because of DMA module and transactions management overhead). These functions provide less typical interface, for applications that must offload main CPU while ciphertext or plaintext is being processed, at cost of longer cryptograhpic processing time.</p>
|
|
<h1><a class="anchor" id="LTCInit"></a>
|
|
LTC Driver Initialization and Configuration</h1>
|
|
<p>LTC Driver is initialized by calling the <a class="el" href="group__ltc__driver.html#gafea5a60bdbe7129ca5456edd57ed2766" title="Initializes the LTC driver. ">LTC_Init()</a> function, it enables the LTC module clock in the Kinetis SIM module. If AES or DES engine is used and the LTC module implementation features the LTC DPA Mask Seed register, seed the DPA mask generator by using the seed from a random number generator. The <a class="el" href="group__ltc__driver.html#ga6ea4e59d2ae1c30a71742929f7914652" title="Sets the DPA Mask Seed register. ">LTC_SetDpaMaskSeed()</a> function is provided to set the DPA mask seed.</p>
|
|
<h1><a class="anchor" id="LTCRtos"></a>
|
|
Comments about API usage in RTOS</h1>
|
|
<p>LTC operations provided by this driver are not re-entrant. Thus, application software shall ensure the LTC module operation is not requested from different tasks or interrupt service routines while an operation is in progress.</p>
|
|
<h1><a class="anchor" id="LTCisr"></a>
|
|
Comments about API usage in interrupt handler</h1>
|
|
<p>All APIs can be used from interrupt handler although execution time shall be considered (interrupt latency of equal and lower priority interrupts increases).</p>
|
|
<h1><a class="anchor" id="LTCEx"></a>
|
|
LTC Driver Examples</h1>
|
|
<h2>Simple examples</h2>
|
|
<p>Initialize LTC after Power On Reset or reset cycle </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver.html#gafea5a60bdbe7129ca5456edd57ed2766">LTC_Init</a>(LTC0);</div>
|
|
<div class="line"> <span class="comment">/* optionally initialize DPA mask seed register */</span></div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver.html#ga6ea4e59d2ae1c30a71742929f7914652">LTC_SetDpaMaskSeed</a>(randomNumber);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --><p> Encrypt plaintext by DES engine </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> <span class="keywordtype">char</span> plain[16];</div>
|
|
<div class="line"> <span class="keywordtype">char</span> cipher[16];</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="keywordtype">char</span> iv[<a class="code" href="group__ltc__driver__des.html#ga38decd985c231cf4087bf216e7abba11">LTC_DES_IV_SIZE</a>];</div>
|
|
<div class="line"> <span class="keywordtype">char</span> key1[<a class="code" href="group__ltc__driver__des.html#ga359a937ff01d6fd66e44bda5d39bd637">LTC_DES_KEY_SIZE</a>];</div>
|
|
<div class="line"> <span class="keywordtype">char</span> key2[<a class="code" href="group__ltc__driver__des.html#ga359a937ff01d6fd66e44bda5d39bd637">LTC_DES_KEY_SIZE</a>];</div>
|
|
<div class="line"> <span class="keywordtype">char</span> key3[<a class="code" href="group__ltc__driver__des.html#ga359a937ff01d6fd66e44bda5d39bd637">LTC_DES_KEY_SIZE</a>];</div>
|
|
<div class="line"></div>
|
|
<div class="line"> memcpy(plain, <span class="stringliteral">"Hello World!"</span>, 12);</div>
|
|
<div class="line"> memcpy(iv, <span class="stringliteral">"initvect"</span>, <a class="code" href="group__ltc__driver__des.html#ga38decd985c231cf4087bf216e7abba11">LTC_DES_IV_SIZE</a>);</div>
|
|
<div class="line"> memcpy(key1, <span class="stringliteral">"mykey1aa"</span>, <a class="code" href="group__ltc__driver__des.html#ga359a937ff01d6fd66e44bda5d39bd637">LTC_DES_KEY_SIZE</a>);</div>
|
|
<div class="line"> memcpy(key2, <span class="stringliteral">"mykey2bb"</span>, <a class="code" href="group__ltc__driver__des.html#ga359a937ff01d6fd66e44bda5d39bd637">LTC_DES_KEY_SIZE</a>);</div>
|
|
<div class="line"> memcpy(key3, <span class="stringliteral">"mykey3cc"</span>, <a class="code" href="group__ltc__driver__des.html#ga359a937ff01d6fd66e44bda5d39bd637">LTC_DES_KEY_SIZE</a>);</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver__des.html#ga34e8e701927d62909cd40a3cba625ec7">LTC_DES3_EncryptCbc</a>(LTC0, plain, cipher, 16, iv, key1, key2, key3);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --><p>Encrypt ciphertext by AES engine </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> <span class="keywordtype">char</span> plain[16] = {0};</div>
|
|
<div class="line"> <span class="keywordtype">char</span> cipher[16];</div>
|
|
<div class="line"> <span class="keywordtype">char</span> iv[16] = {0};</div>
|
|
<div class="line"> <span class="keywordtype">char</span> key[16] = {0};</div>
|
|
<div class="line"></div>
|
|
<div class="line"> memcpy(plain, <span class="stringliteral">"Hello World!"</span>, 12);</div>
|
|
<div class="line"> memcpy(iv, <span class="stringliteral">"initvectorinitve"</span>, 16);</div>
|
|
<div class="line"> memcpy(key, <span class="stringliteral">"__mykey1aa__^^.."</span>, 16);</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver__aes.html#ga9f95a64808ea51e9c7ecba4e58b18dc9">LTC_AES_EncryptCbc</a>(LTC0, plain, cipher, 16, iv, key, 16);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --><p>Compute keyed hash by AES engine (CMAC) </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> <span class="keywordtype">char</span> message[] = <span class="stringliteral">"Hello World!"</span>;</div>
|
|
<div class="line"> <span class="keywordtype">char</span> key[16] = {0};</div>
|
|
<div class="line"> <span class="keywordtype">char</span> output[16];</div>
|
|
<div class="line"> uint32_t szOutput = 16u;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> memcpy(key, <span class="stringliteral">"__mykey1aa__^^.."</span>, 16);</div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver__hash.html#ga78a23fb22a91c573d844b4b27294f6dc">LTC_HASH</a>(LTC0, <a class="code" href="group__ltc__driver__hash.html#ggad8e545023f6e9ab3c7c40de3b3b37106a7d3e5d87316147d834d91d1bf0e7398c">kLTC_Cmac</a>, message, <span class="keyword">sizeof</span>(message), key, 16, output, &szOutput);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --><p>Compute hash by MDHA engine (SHA-256) </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> <span class="keywordtype">char</span> message[] = <span class="stringliteral">"Hello World!"</span>;</div>
|
|
<div class="line"> <span class="keywordtype">char</span> output[32];</div>
|
|
<div class="line"> uint32_t szOutput = 32u;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver__hash.html#ga78a23fb22a91c573d844b4b27294f6dc">LTC_HASH</a>(LTC0, kLTC_Sha256, message, <span class="keyword">sizeof</span>(message), NULL, output, &szOutput);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --><p>Compute modular integer exponentiation </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> status_t status;</div>
|
|
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span> bigA[] = <span class="stringliteral">"112233445566778899aabbccddeeff"</span>;</div>
|
|
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span> bigN[] = <span class="stringliteral">"aabbaabbaabb112233445566778899aabbccddeefe"</span>;</div>
|
|
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span> bigE[] = <span class="stringliteral">"065537"</span>;</div>
|
|
<div class="line"> <span class="keywordtype">char</span> A[256], E[256], N[256], res[256];</div>
|
|
<div class="line"> uint16_t sizeA, sizeE, sizeN, sizeRes;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="comment">/* Note LTC PKHA integer format is least significant byte at lowest address.</span></div>
|
|
<div class="line"><span class="comment"> * The _read_string() function converts the input string to LTC PKHA integer format</span></div>
|
|
<div class="line"><span class="comment"> * and writes sizeof() the integer to the size variable (sizeA, sizeE, sizeN).</span></div>
|
|
<div class="line"><span class="comment"> */</span></div>
|
|
<div class="line"> _read_string(A, &sizeA, bigA);</div>
|
|
<div class="line"> _read_string(E, &sizeE, bigN);</div>
|
|
<div class="line"> _read_string(N, &sizeN, bigE);</div>
|
|
<div class="line"></div>
|
|
<div class="line"> status = <a class="code" href="group__ltc__driver__pkha.html#ga3c62dbae643f27b19726964358c36c7f">LTC_PKHA_ModExp</a>(base, A, sizeA, N, sizeN, E, sizeE, res, &sizeRes, <a class="code" href="group__ltc__driver__pkha.html#gga8508a97598439c72c545da28868be18ea785f77826b6a2d1398ac75bab7dfa95c">kLTC_PKHA_IntegerArith</a>,</div>
|
|
<div class="line"> kLTC_PKHA_NormalValue, kLTC_PKHA_TimingEqualized);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --><p>Compute elliptic curve point multiplication </p>
|
|
<div class="fragment"><div class="line">~~~~~{.c}</div>
|
|
<div class="line"> status_t status;</div>
|
|
<div class="line"> <a class="code" href="group__ltc__driver__pkha.html#structltc__pkha__ecc__point__t">ltc_pkha_ecc_point_t</a> B0, res0;</div>
|
|
<div class="line"> uint8_t bx, by, resx, resy;</div>
|
|
<div class="line"> uint8_t E[256];</div>
|
|
<div class="line"> <span class="keywordtype">bool</span> isPointOfInfinity;</div>
|
|
<div class="line"> uint16_t resultSize, sizeE;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="comment">/* Example carried out with 1-byte curve params and point coordinates. */</span></div>
|
|
<div class="line"> uint8_t size = 1;</div>
|
|
<div class="line"> uint8_t aCurveParam = 1;</div>
|
|
<div class="line"> uint8_t bCurveParam = 0;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> bx = 9;</div>
|
|
<div class="line"> by = 5;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> B0.<a class="code" href="group__ltc__driver__pkha.html#a3e548db41a957bbc94e2d60c629c7478">X</a> = &bx;</div>
|
|
<div class="line"> B0.<a class="code" href="group__ltc__driver__pkha.html#aedfed521edb310ef0916b9a7898be500">Y</a> = &by;</div>
|
|
<div class="line"> res0.<a class="code" href="group__ltc__driver__pkha.html#a3e548db41a957bbc94e2d60c629c7478">X</a> = &resx;</div>
|
|
<div class="line"> res0.<a class="code" href="group__ltc__driver__pkha.html#aedfed521edb310ef0916b9a7898be500">Y</a> = &resy;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="comment">/* Prime modulus of the field. */</span></div>
|
|
<div class="line"> N[0] = 23;</div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="comment">/* Note LTC PKHA integer has least significant byte at lowest address */</span></div>
|
|
<div class="line"></div>
|
|
<div class="line"> <span class="comment">/* Scalar multiplier */</span></div>
|
|
<div class="line"> <span class="keywordtype">char</span> ew[] = <span class="stringliteral">"0100"</span>; <span class="comment">/* 256 in decimal */</span></div>
|
|
<div class="line"> _read_string(E, &sizeE, ew);</div>
|
|
<div class="line"></div>
|
|
<div class="line"> status = <a class="code" href="group__ltc__driver__pkha.html#gaef779eb70f87c08c661c3e2801302ae6">LTC_PKHA_ECC_PointMul</a>(LTC0, &B0, E, sizeE, N, NULL, &aCurveParam, &bCurveParam, size,</div>
|
|
<div class="line"> kLTC_PKHA_TimingEqualized, <a class="code" href="group__ltc__driver__pkha.html#gga8508a97598439c72c545da28868be18ea785f77826b6a2d1398ac75bab7dfa95c">kLTC_PKHA_IntegerArith</a>, &res0, &isPointOfInfinity);</div>
|
|
<div class="line">~~~~~</div>
|
|
</div><!-- fragment --> <table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
|
|
Modules</h2></td></tr>
|
|
<tr class="memitem:group__ltc__driver__synchronous__blocking"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ltc__driver__synchronous__blocking.html">LTC Blocking APIs</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:group__ltc__edma__driver"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ltc__edma__driver.html">LTC Non-blocking eDMA APIs</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
|
|
Files</h2></td></tr>
|
|
<tr class="memitem:fsl__ltc_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="fsl__ltc_8h.html">fsl_ltc.h</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </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:gafea5a60bdbe7129ca5456edd57ed2766"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ltc__driver.html#gafea5a60bdbe7129ca5456edd57ed2766">LTC_Init</a> (LTC_Type *base)</td></tr>
|
|
<tr class="memdesc:gafea5a60bdbe7129ca5456edd57ed2766"><td class="mdescLeft"> </td><td class="mdescRight">Initializes the LTC driver. <a href="#gafea5a60bdbe7129ca5456edd57ed2766">More...</a><br/></td></tr>
|
|
<tr class="separator:gafea5a60bdbe7129ca5456edd57ed2766"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga5c347943d2994a658efeb04e2b9a7fcc"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ltc__driver.html#ga5c347943d2994a658efeb04e2b9a7fcc">LTC_Deinit</a> (LTC_Type *base)</td></tr>
|
|
<tr class="memdesc:ga5c347943d2994a658efeb04e2b9a7fcc"><td class="mdescLeft"> </td><td class="mdescRight">Deinitializes the LTC driver. <a href="#ga5c347943d2994a658efeb04e2b9a7fcc">More...</a><br/></td></tr>
|
|
<tr class="separator:ga5c347943d2994a658efeb04e2b9a7fcc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga6ea4e59d2ae1c30a71742929f7914652"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ltc__driver.html#ga6ea4e59d2ae1c30a71742929f7914652">LTC_SetDpaMaskSeed</a> (LTC_Type *base, uint32_t mask)</td></tr>
|
|
<tr class="memdesc:ga6ea4e59d2ae1c30a71742929f7914652"><td class="mdescLeft"> </td><td class="mdescRight">Sets the DPA Mask Seed register. <a href="#ga6ea4e59d2ae1c30a71742929f7914652">More...</a><br/></td></tr>
|
|
<tr class="separator:ga6ea4e59d2ae1c30a71742929f7914652"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
|
|
Driver version</h2></td></tr>
|
|
<tr class="memitem:ga93b946bb00253cca6bbcd81d761a7d58"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__ltc__driver.html#ga93b946bb00253cca6bbcd81d761a7d58">FSL_LTC_DRIVER_VERSION</a>   (<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 0))</td></tr>
|
|
<tr class="memdesc:ga93b946bb00253cca6bbcd81d761a7d58"><td class="mdescLeft"> </td><td class="mdescRight">LTC driver version. <a href="#ga93b946bb00253cca6bbcd81d761a7d58">More...</a><br/></td></tr>
|
|
<tr class="separator:ga93b946bb00253cca6bbcd81d761a7d58"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a class="anchor" id="ga93b946bb00253cca6bbcd81d761a7d58"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define FSL_LTC_DRIVER_VERSION   (<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 0))</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Version 2.0.0. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a class="anchor" id="gafea5a60bdbe7129ca5456edd57ed2766"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void LTC_Init </td>
|
|
<td>(</td>
|
|
<td class="paramtype">LTC_Type * </td>
|
|
<td class="paramname"><em>base</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This function initializes the LTC driver. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">base</td><td>LTC peripheral base address </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga5c347943d2994a658efeb04e2b9a7fcc"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void LTC_Deinit </td>
|
|
<td>(</td>
|
|
<td class="paramtype">LTC_Type * </td>
|
|
<td class="paramname"><em>base</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>This function deinitializes the LTC driver. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">base</td><td>LTC peripheral base address </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga6ea4e59d2ae1c30a71742929f7914652"></a>
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void LTC_SetDpaMaskSeed </td>
|
|
<td>(</td>
|
|
<td class="paramtype">LTC_Type * </td>
|
|
<td class="paramname"><em>base</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint32_t </td>
|
|
<td class="paramname"><em>mask</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>The DPA Mask Seed register reseeds the mask that provides resistance against DPA (differential power analysis) attacks on AES or DES keys.</p>
|
|
<p>Differential Power Analysis Mask (DPA) resistance uses a randomly changing mask that introduces "noise" into the power consumed by the AES or DES. This reduces the signal-to-noise ratio that differential power analysis attacks use to "guess" bits of the key. This randomly changing mask should be seeded at POR, and continues to provide DPA resistance from that point on. However, to provide even more DPA protection it is recommended that the DPA mask be reseeded after every 50,000 blocks have been processed. At that time, software can opt to write a new seed (preferably obtained from an RNG) into the DPA Mask Seed register (DPAMS), or software can opt to provide the new seed earlier or later, or not at all. DPA resistance continues even if the DPA mask is never reseeded.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">base</td><td>LTC peripheral base address </td></tr>
|
|
<tr><td class="paramname">mask</td><td>The DPA mask seed. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- HTML footer for doxygen 1.8.5-->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul class="foot">
|
|
<li class="footer">© 2016 NXP Semiconductors. All rights reserved.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|