<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: LTC_AES_EncryptCbc does not return correct results in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652823#M39773</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have WolfSSL I still don't really understand why you are going through the LTC interface?&lt;BR /&gt;They have a define FREESCALE_MMCAU which can be enabled to hook directly to the mmCAU. It even works ;-)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 01 Feb 2017 20:10:21 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2017-02-01T20:10:21Z</dc:date>
    <item>
      <title>LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652811#M39761</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using the LTC libraries with the K82 part. &amp;nbsp;I have noticed that if I use a 32 bit key and 64 bytes of data and feed it to the library that the first 16 bytes come back correct but the residual bytes do not. &amp;nbsp;Here is an example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Key = &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 63 68 69 63 6B 65 6E 20 74 65 72 69 79 61 6B 69&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2C 20 69 73 20 76 65 72 79 20 79 75 6D 6D 79 21&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data IN =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;49 20 77 6F 75 6C 64 20 6C 69 6B 65 20 74 68 65&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;20 47 65 6E 65 72 61 6C 20 47 61 75 27 73 20 43&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;68 69 63 6B 65 6E 2C 20 70 6C 65 61 73 65 2C 20&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;61 6E 64 20 77 6F 6E 74 6F 6E 20 73 6F 75 70 2E = "I would like the General Gau's Chicken, please, and wonton soup."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data OUT = &amp;nbsp;49 30 D0 2C 0B 75 CF 5C 15 24 B4 0D A6 5C F9 7B&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2E B6 1A 0F 3B 20 13 7E E2 8D 89 95 F0 21 F7 C6&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;D6 38 A0 13 96 90 57 B0 AC 2E A9 80 91 EE 53 47&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;F7 64 0D A4 9D A9 20 B4 BD 23 A1 C8 17 76 EF E6&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It should be: &amp;nbsp;&lt;/P&gt;&lt;TABLE style="color: #666666; background-color: #ffffff; border: 0px; font-size: 12px;"&gt;&lt;TBODY style="border: 0px; font-weight: inherit; font-size: inherit;"&gt;&lt;TR class="" data-l="0" style="border: 0px; font-weight: inherit; font-size: inherit;"&gt;&lt;TD class="" data-c="0" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;49&lt;/TD&gt;&lt;TD class="" data-c="1" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;30&lt;/TD&gt;&lt;TD class="" data-c="2" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;d0&lt;/TD&gt;&lt;TD class="" data-c="3" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;2c&lt;/TD&gt;&lt;TD class="" data-c="4" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;0b&lt;/TD&gt;&lt;TD class="" data-c="5" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;75&lt;/TD&gt;&lt;TD class="" data-c="6" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;cf&lt;/TD&gt;&lt;TD class="" data-c="7" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;5c&lt;/TD&gt;&lt;TD class="" data-c="8" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;15&lt;/TD&gt;&lt;TD class="" data-c="9" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;24&lt;/TD&gt;&lt;TD class="" data-c="10" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;b4&lt;/TD&gt;&lt;TD class="" data-c="11" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;0d&lt;/TD&gt;&lt;TD class="" data-c="12" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;a6&lt;/TD&gt;&lt;TD class="" data-c="13" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;5c&lt;/TD&gt;&lt;TD class="" data-c="14" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;f9&lt;/TD&gt;&lt;TD class="" data-c="15" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;7b&lt;/TD&gt;&lt;/TR&gt;&lt;TR class="" data-l="1" style="border: 0px; font-weight: inherit; font-size: inherit;"&gt;&lt;TD class="" data-c="0" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;2b&lt;/TD&gt;&lt;TD class="" data-c="1" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;b4&lt;/TD&gt;&lt;TD class="" data-c="2" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;ac&lt;/TD&gt;&lt;TD class="" data-c="3" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;ab&lt;/TD&gt;&lt;TD class="" data-c="4" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;b1&lt;/TD&gt;&lt;TD class="" data-c="5" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;8b&lt;/TD&gt;&lt;TD class="" data-c="6" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;fa&lt;/TD&gt;&lt;TD class="" data-c="7" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;4c&lt;/TD&gt;&lt;TD class="" data-c="8" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;19&lt;/TD&gt;&lt;TD class="" data-c="9" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;3f&lt;/TD&gt;&lt;TD class="" data-c="10" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;b1&lt;/TD&gt;&lt;TD class="" data-c="11" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;8b&lt;/TD&gt;&lt;TD class="" data-c="12" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;37&lt;/TD&gt;&lt;TD class="" data-c="13" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;5a&lt;/TD&gt;&lt;TD class="" data-c="14" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;2b&lt;/TD&gt;&lt;TD class="" data-c="15" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;5d&lt;/TD&gt;&lt;/TR&gt;&lt;TR class="" data-l="2" style="border: 0px; font-weight: inherit; font-size: inherit;"&gt;&lt;TD class="" data-c="0" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;0f&lt;/TD&gt;&lt;TD class="" data-c="1" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;b3&lt;/TD&gt;&lt;TD class="" data-c="2" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;bc&lt;/TD&gt;&lt;TD class="" data-c="3" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;50&lt;/TD&gt;&lt;TD class="" data-c="4" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;63&lt;/TD&gt;&lt;TD class="" data-c="5" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;d6&lt;/TD&gt;&lt;TD class="" data-c="6" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;ce&lt;/TD&gt;&lt;TD class="" data-c="7" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;43&lt;/TD&gt;&lt;TD class="" data-c="8" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;62&lt;/TD&gt;&lt;TD class="" data-c="9" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;f6&lt;/TD&gt;&lt;TD class="" data-c="10" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;fc&lt;/TD&gt;&lt;TD class="" data-c="11" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;e2&lt;/TD&gt;&lt;TD class="" data-c="12" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;9a&lt;/TD&gt;&lt;TD class="" data-c="13" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;fa&lt;/TD&gt;&lt;TD class="" data-c="14" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;56&lt;/TD&gt;&lt;TD class="" data-c="15" style="border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;ab&lt;/TD&gt;&lt;/TR&gt;&lt;TR class="" data-l="3" style="border: 0px; font-weight: inherit; font-size: inherit;"&gt;&lt;TD class="" data-c="0" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;93&lt;/TD&gt;&lt;TD class="" data-c="1" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;c4&lt;/TD&gt;&lt;TD class="" data-c="2" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;7e&lt;/TD&gt;&lt;TD class="" data-c="3" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;ac&lt;/TD&gt;&lt;TD class="" data-c="4" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;1f&lt;/TD&gt;&lt;TD class="" data-c="5" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;bc&lt;/TD&gt;&lt;TD class="" data-c="6" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;dd&lt;/TD&gt;&lt;TD class="" data-c="7" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;92&lt;/TD&gt;&lt;TD class="" data-c="8" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;b2&lt;/TD&gt;&lt;TD class="" data-c="9" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;84&lt;/TD&gt;&lt;TD class="" data-c="10" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;84&lt;/TD&gt;&lt;TD class="" data-c="11" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;87&lt;/TD&gt;&lt;TD class="" data-c="12" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;76&lt;/TD&gt;&lt;TD class="" data-c="13" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;21&lt;/TD&gt;&lt;TD class="" data-c="14" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;84&lt;/TD&gt;&lt;TD class="" data-c="15" style="background-color: transparent; border: 0px; font-weight: 400; font-size: inherit; padding: 1px;"&gt;a2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;If I run this through LTC_AES_DecryptCbc it comes back ok but that does not mean we are compliant. &amp;nbsp;I have no Idea why this is happening.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use the WolfSSL libraries that call into the LTC libraries&amp;nbsp;&lt;/P&gt;&lt;P&gt;code looks like this:&lt;/P&gt;&lt;P&gt;wc_AesSetKey(&amp;amp;temp-&amp;gt;session-&amp;gt;aes, (const byte *) temp-&amp;gt;session-&amp;gt;aes.key, temp-&amp;gt;session-&amp;gt;keylen, NULL,&lt;BR /&gt; AES_ENCRYPTION);&lt;BR /&gt; wc_AesCbcEncrypt(&amp;amp;temp-&amp;gt;session-&amp;gt;aes, BufOut, &amp;amp;((struct CmdEncDec *) (&amp;amp;frameIN-&amp;gt;data))-&amp;gt;data,&lt;BR /&gt; ((struct CmdEncDec *) (&amp;amp;frameIN-&amp;gt;data))-&amp;gt;len);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Jan 2017 17:01:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652811#M39761</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-01-27T17:01:17Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652812#M39762</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tested WolfSSL's AES256 and don't get the result that you do (mine are correct).&lt;/P&gt;&lt;P&gt;However there are loads of setting that could be used and you may be using software or mmCAU, which means that it is presumably a configuration that is not correct somewhere.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Is your implementation offloading parts to the Crypto Acceleration Unit (CAU)? And if so, are these Freescale/NXP supplied routines hooked to the WolfSSL or from another source?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your single block encryption is correct but when cycling you have an error (the error is symmetrical for encryption and decryption). This means that your initialisation vector is OK for the first use (it will be all zeros and is embedded in the WolfSSL instance).&lt;BR /&gt;When the second block is encrypted it presumably has a problem with its new initialisation vector, resulting in errors from that point in. The WolfSSL AES instance saves the initialisation vector as 4 long words (rather than as 16 bytes as is often done) and there is a risk that something might be using these long words incorrectly and think that they are bytes in big-endian format. Therefore check carefully big and little endian configurations and incompatibilities between the WolfSSL AES storage and possibly passing conventions to NXP mmCAU assembler code (if used).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are unfortunately many combinations possible for the encryption libraries and so they need to be carefully configured to actually work correctly (and optimally on a particular chip).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000080;"&gt;&lt;SPAN&gt;Supporting Kinetis professionals: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2F" rel="nofollow" target="_blank"&gt;http://www.utasker.com/&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Jan 2017 20:15:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652812#M39762</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-27T20:15:33Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652813#M39763</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;Chris and interested AES users&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;Various libraries are being encapsulated into the uTasker project's Crypto functions which both avoid mistakes (saving project time in many cases) and increase performance in some situations (mainly Flash since the libraries [also CMSIS DSP] in their original form sometimes link in data that is not needed and unnecessarily consume (sometimes large) program space).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;Here I have some performance and Flash/RAM comparisons between WolfSSL and mbedTLS (I don't guarantee accuracy and will discussing with the manufacturers about further optimisation possibilities - &lt;EM&gt;WolfSSL has a uTasker port in their code which is also being analysed for potential improvements&lt;/EM&gt;).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/12533iE6D80BB4A489F753/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;It is interesting to note that the mmCAU not only increases performance by a factor of about 4 for encryption and decryption but it can also save almost 10k of Flash space (code and tables)!!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;When no mmCAU is available there is a further interesting increase in performance by locating tables in RAM (rather than Flash) and a saving in Flash by generating the content rather than taking it from a const look-up table. This is due to the faster RAM access possible in the K64 but there is of course a trade off between the improved performance and the RAM consumption.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;From the tables it is clear to see what range of performance can be expected with different libraries and especially with and without mmCAU.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;Where AES256 is needed in designs without mmCAU and there is adequate RAM available (about 8.5k free) &lt;SPAN style="text-decoration: underline;"&gt;it certainly makes sense&lt;/SPAN&gt; in relocating tables to SRAM (or enabling the mbedTLS option) since it can double throughput!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;Expect very similar results on K8x parts:&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTWR-K80F150M.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TWR-K80F150M.html&lt;/A&gt;&lt;BR /&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-K82F.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-K82F.html&lt;/A&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;Regards&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;Mark&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" lang="en-GB" style="margin-left: 0.03cm; margin-top: 0.49cm; widows: 2; orphans: 2;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif; font-size: 13px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN&gt;Professional Kinetis Services: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fservices.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/services.html&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 28 Jan 2017 04:39:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652813#M39763</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-28T04:39:17Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652814#M39764</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;For completeness, these are the same comparisons when OpenSSL is used. Is also has a W option to roll out some loops which costs around 4k of Flash and has a performance advantage of about 20% - its tables are fixed in Flash so the mbedTLS option still has the lead in SW implementation:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/12506i4B92886761CDC42D/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When mmCAU is available all of the library components can be disabled (removed) and the mmCAU accessed directly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The uTasker AES256 interface allows this (as stated, when there is an mmCAU available) and the figures below are achieved:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/12612i45DCA41190294EB9/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;It may be possible to shave off a few more ns by running all code from SRAM but this is tending to the limit and is a further substantial improvement of around 35% on the fastest library option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 29 Jan 2017 06:59:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652814#M39764</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-29T06:59:08Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652815#M39765</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Seems like the problem is the IV is reset to the current cashed value on every call to the &amp;nbsp;CBC encrypt and decrypt functions. &amp;nbsp;I believe this is wrong procedure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Write IV data to the context register. */&lt;BR /&gt; ltc_set_context(base, &amp;amp;iv[0], LTC_AES_IV_SIZE, 0);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jan 2017 15:44:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652815#M39765</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-01-30T15:44:23Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652816#M39766</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chis&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is normal to reset the IV before encrypting or decrypting each plaintext message [a message being a multiple of 16 bytes considered to belong together] (although one could also prime to any predefined value at both tx and rx). The initial IV affects the first block output but doesn't explain errors between each block in the ciphertext as you have shown.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have WolfSSL try this (direct calls) to ensure that the LTC plumbing is not screwing things up. If it also gives the same results the problem is in the WolfSSL part (setup or something). [WolfSSL's set key call also resets the IV].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Aes aes_encrypt_context;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;wc_AesSetKey(aes_encrypt_context, &amp;amp;Key, (256/8), NULL, AES_ENCRYPTION);&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;wc_AesCbcEncrypt(aes_encrypt_context, &amp;amp;DataOUT, &amp;amp;DataIN, sizeof(DataIN));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jan 2017 16:35:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652816#M39766</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-30T16:35:49Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652817#M39767</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's what I expect to happen the SetKey also resets the IV. &amp;nbsp;This is consistent with libgcrypt as well. &amp;nbsp;The LTC however, resets the IV on every call to decrypt or encrypt which does not to seem to be compliant. &amp;nbsp;I wish someone from NXP would step up to this and explain why they crafted the ltc driver (fsl_ltc.c) the way they did. &amp;nbsp;Is it compliant with the standard? &amp;nbsp;Probably not.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jan 2017 18:02:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652817#M39767</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-01-30T18:02:16Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652818#M39768</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please clarify:&lt;/P&gt;&lt;P&gt;- "&lt;EM&gt;The LTC however, resets the IV on every call to decrypt or encrypt&lt;/EM&gt;"&lt;/P&gt;&lt;P&gt;Do you mean every call to encrypt or decrypt a &lt;SPAN style="text-decoration: underline;"&gt;message&lt;/SPAN&gt;? Or a &lt;SPAN style="text-decoration: underline;"&gt;block&lt;/SPAN&gt;?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Resetting for every "block" is equivalent to ECB (Electronic Code Block) mode (OpenSSl says "We strongly recommend that you not use it under any circumstances").&lt;BR /&gt;Resetting for each "message" is OK (CBC mode feed backs the output of each block as new IV for the subsequent block).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the output (first 64 bytes) from AES256 in CBC using your key and plain text:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#aes256&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;0x49 0x30 0xd0 0x2c 0x0b 0x75 0xcf 0x5c 0x15 0x24 0xb4 0x0d 0xa6 0x5c 0xf9 0x7b&lt;BR /&gt;&amp;nbsp;0x2b 0xb4 0xac 0xab 0xb1 0x8b 0xfa 0x4c 0x19 0x3f 0xb1 0x8b 0x37 0x5a 0x2b 0x5d&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;AES256 passed CBC&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the output (first 64 bytes) from AES256 in ECB using your key and plain text:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#aes256&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;0x49 0x30 0xd0 0x2c 0x0b 0x75 0xcf 0x5c 0x15 0x24 0xb4 0x0d 0xa6 0x5c 0xf9 0x7b&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;0x2e 0xb6 0x1a 0x0f 0x3b 0x20 0x13 0x7e 0xe2 0x8d 0x89 0x95 0xf0 0x21 0xf7 0xc6&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;AES256 failed CBC&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It does look to match with your problem. Therefore you must really mean that IV is being reset "between" blocks, which is of course false for ECB mode.&lt;BR /&gt;Either you are not using the mode that you think or someone has really killed the code in the LTC plumbing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also you never said whether you are making use of the mmCAU or not. As I noted, when used correctly, you can get almost 900% improvement in performance over the SW library. This is where NXP's main interest lies so I would think that there are hooks in there somewhere.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jan 2017 19:01:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652818#M39768</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-30T19:01:35Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652819#M39769</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Please clarify:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;- "&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&lt;EM&gt;The LTC however, resets the IV on every call to decrypt or encrypt&lt;/EM&gt;&lt;/SPAN&gt;"&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Do you mean every call to encrypt or decrypt a &lt;SPAN style="border: 0px; font-weight: inherit; text-decoration: underline;"&gt;message&lt;/SPAN&gt;? Or a &lt;SPAN style="border: 0px; font-weight: inherit; text-decoration: underline;"&gt;block&lt;/SPAN&gt;?&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Every call to E/D. &amp;nbsp;I(t calls&amp;nbsp;ltc_symmetric_update(base, key, keySize, kLTC_AlgorithmAES, kLTC_ModeCBC, kLTC_ModeDecrypt); which if you drill down in the LTC it does an all register base-&amp;gt;CW&amp;nbsp; = (uint32_t)kLTC_ClearAll . &amp;nbsp;It also call&amp;nbsp;&amp;nbsp; &amp;nbsp; ltc_set_context(base, &amp;amp;iv[0], LTC_AES_IV_SIZE, 0); each call to E/D as well. &amp;nbsp;This is not consistent with libgcrypt either.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;This does not seem consistent with libgcrypt which I have to be able to pace on the other end. &amp;nbsp;Likewise, calls to the CBC E/D with more than 16 bytes does not produce the correct results against multiple web based calculators as shown in my first post.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;BTW: "&lt;SPAN&gt;&lt;EM&gt;This is the output (first 64 bytes) from AES256 in CBC using your key and plain text&lt;/EM&gt;:" &amp;nbsp;didi you mean 64 bits?&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN&gt;libgcrypt seems to hold those previous run bits between calls to E/D until you call SetIV. &amp;nbsp;At that point they get cleared.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN&gt;I am using the K82 and the LTC is directly operating on the engine registers of the k82 verified.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN&gt;"&lt;SPAN style="background-color: #ffffff;"&gt;&lt;EM&gt;It does look to match with your problem. Therefore you must really mean that IV is being reset "between" blocks, which is of course false for ECB mode.&lt;/EM&gt;" &amp;nbsp;Did you mean false for CBC here? &amp;nbsp;I was under the impression that all AES was 16 byte block size but for CBC, the carry over of those previous sub results were kept in the computation of the next 16 bytes and so on and so on until reset.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Also, according to the K82 reference manual:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;42.3.5.1 AES CBC mode use of the Mode Register&lt;BR /&gt;The AES CBC mode uses the Mode Register as follows:&lt;BR /&gt;• The Encrypt (ENC) field should be 1 for encryption and 0 for decryption.&lt;BR /&gt;• The ICV/TEST bit is not used in these modes.&lt;BR /&gt;• The Algorithm State (AS) field is used only in CBC mode to prevent IV update in the&lt;BR /&gt;context for the last data block when set to "Finalize" (2h). &amp;lt;&amp;lt;&amp;lt;&amp;lt; this is not being set to 2 in the LTC but is being set to 0&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jan 2017 14:30:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652819#M39769</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-01-31T14:30:02Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652820#M39770</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It appears there are multiple versions of the LTC in the wild. &amp;nbsp;There is one from the 1.3 SDK and another from the 2.0/2.1 SDK. &amp;nbsp;They are diifferent and I was using the one from 2.0/2.1 which came from the new bull shit SDK generator. &amp;nbsp;I for one thought the Processor Expert was a better way to keep things organized. &amp;nbsp;Two many links that you can't check in to GIT because it's all links to the SDK somewhere else not in the workspace.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jan 2017 19:25:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652820#M39770</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-01-31T19:25:40Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652821#M39771</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I meant &lt;STRONG&gt;32 bytes&lt;/STRONG&gt; and not 64 bytes, and false for &lt;STRONG&gt;CBC&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code changes between versions are standard as far as I can see ([fixes or new bugs?] and who changed it ?) - I couldn't find the routines that you were referring to in SDK 1.3 and don't want to try anything with KDS 2.x at the moment since it seems a disastrous way to work on real developments.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Fortunately, using the underlying libraries directly, means I am not affected.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jan 2017 20:04:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652821#M39771</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-31T20:04:38Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652822#M39772</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you get a copy of the SDK 2.1&amp;nbsp;for FRDM-K82F and look in the&amp;nbsp;\SDK_2.1_FRDM-K82F\devices\MK82F25615\drivers\fsl_ltc.c file, you will see the difference between 1.3 and this mess.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Feb 2017 15:31:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652822#M39772</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-02-01T15:31:51Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652823#M39773</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have WolfSSL I still don't really understand why you are going through the LTC interface?&lt;BR /&gt;They have a define FREESCALE_MMCAU which can be enabled to hook directly to the mmCAU. It even works ;-)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Feb 2017 20:10:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652823#M39773</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-02-01T20:10:21Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652824#M39774</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mark,&lt;/P&gt;&lt;P&gt;The Wolfssl wants to call the ltc function calls because of the K82. &amp;nbsp;I didn't implement this. &amp;nbsp;I'm not sure that the mmCAU works with the K82 part.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Feb 2017 15:18:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652824#M39774</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-02-03T15:18:18Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652825#M39775</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The K82 has an mmCAU integrated because it is intended for such operations.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a report of comparisons (benchmarks) using various solutions at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fdocs%2FuTasker%2FuTasker_Cryptography.pdf" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTasker_Cryptography.pdf&lt;/A&gt;&lt;BR /&gt;where you can see that the K82F at 150MHz performs AES256 encrytions/decryptions about 5x faster that in SW.&lt;/P&gt;&lt;P&gt;I haven't investigated yet why it is actually slower than a 120MHz K64F, which does the same AES265 encryption 35% faster than the 150MHz K82F.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Correction: The 150MHz K80F performs AES256 16% faster than a 120Mz K64&lt;/EM&gt;&lt;EM&gt;, which makes sense. I was comparing initially with a longer plaintext by mistake. This makes it 8.5x faster than in SW.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;In any case, if throughput is of importance, the mmCAU should be used otherwise the HW potential is not being utilised fully.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Feb 2017 17:56:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652825#M39775</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-02-03T17:56:21Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652826#M39776</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok so now I'm really confused. &amp;nbsp;The LTC code is called in the Wolfssl SDKs for the K82 from NXP. &amp;nbsp;I see that Chapter 40 of the RM covers mmCAU and chapter 42 covers the LP Trusted Crypt unit which references AESA. &amp;nbsp;&lt;EM&gt; &lt;/EM&gt;I did not see benchmarks for the LTC vs mmCAU. They are both available but I am assuming the the LTC is faster or they would not have used it for the SDK. &amp;nbsp;See&amp;nbsp;&lt;A class="link-titled" href="https://www.wolfssl.com/wolfSSL/Blog/Entries/2016/10/20_New_NXP_Kinetis_K8X_LP_Trusted_Crypto_(LTC)_support_for_PKI_(RSA_ECC).html" title="https://www.wolfssl.com/wolfSSL/Blog/Entries/2016/10/20_New_NXP_Kinetis_K8X_LP_Trusted_Crypto_(LTC)_support_for_PKI_(RSA_ECC).html"&gt;https://www.wolfssl.com/wolfSSL/Blog/Entries/2016/10/20_New_NXP_Kinetis_K8X_LP_Trusted_Crypto_(LTC)_support_for_PKI_(RSA…&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Feb 2017 14:30:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652826#M39776</guid>
      <dc:creator>chriswestervelt</dc:creator>
      <dc:date>2017-02-10T14:30:02Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652827#M39777</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I haven't used the LTC module in the K82 yet so don't have a benchmark to know whether it is faster than the mmCAU or not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Finally however I generated a FRDM-K82F KDS2.1 build (all 350 MBytes of it) to take&amp;nbsp; a look at the LTC interface. The WolfSSL (I think this can only be used for evaluation and needs licensing to work with later) does indeed have a hook for "FREESCALE_LTC" [I wonder why they still call it Freescale since the addition it is only a few months old...?].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I followed this I didn't actually see any code with the IV being reset between blocs because the AESA handles CBC internally from what I can see. Therefore it may be that if one generates the build today the error has been fixed (?)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is however no comment on changes and no version management in the system so it may be pot luck&amp;nbsp; as to whether the code is good or not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once I have checked out the LTC performance I'll update the benchmark. (It is FIFO based so should be pretty fast without any further code optimisations; I found that I could get almost double throughput by optimising away some of the fluff that the libraries add at the mmCU interface but I doubt that it will be as much with the LTC).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Feb 2017 20:14:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652827#M39777</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-02-10T20:14:07Z</dc:date>
    </item>
    <item>
      <title>Re: LTC_AES_EncryptCbc does not return correct results</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652828#M39778</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I now have comparisons for encryption (I didn't do decryption just yet but understand that the speed results are identical) with the LTC in the K82F.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AES256 on K82F at 150MHz mmCAU (set encryption key / 32 byte encryption) 4.4us / &lt;STRONG&gt;7.0us&lt;/STRONG&gt;&amp;nbsp; (4.57MB/s)&lt;BR /&gt;AES256 on K82F at 150MHz LTC (set encryption key / 32 byte encryption) 2.3us / &lt;STRONG&gt;5.5us&lt;/STRONG&gt;&amp;nbsp; (5.82MB/s)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since these are short lengths there is a certain amount of overhead involved getting in and out of the data pump part. So when I use 25kBytes instead of just 32 bytes the throughput improves to &lt;STRONG&gt;10.56MB/s&lt;/STRONG&gt; (compared to &lt;STRONG&gt;5.3MB/s&lt;/STRONG&gt; with mmCAU). This compares to pure SW (mbedTLS &lt;STRONG&gt;621kB/s&lt;/STRONG&gt; and WolfSSL &lt;STRONG&gt;522kB/s&lt;/STRONG&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Comparing these with the WolfSSL benchmarks (in your link) there is some difference:&lt;BR /&gt;- WolfSSL benchmark SW &lt;STRONG&gt;247kB/s&lt;/STRONG&gt;&lt;BR /&gt;- LTC &lt;STRONG&gt;12.2MB/s&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I believe that they do their benchmarks with AES128 (and not AES256) &lt;EM&gt;which should be specified to allow real comparisons&lt;/EM&gt;. I get &lt;STRONG&gt;11.64MB/s&lt;/STRONG&gt; with LTC with AES128, which is pretty similar. In the case of the software implementation I do use aligned buffers and have an improved copy function based on DMA that is called from the code which may explain some improvements but also the accuracy of the measurements can never be fully guaranteed.&lt;BR /&gt;&lt;EM&gt;In fact I wouldn't expect slower results than the benchmark since I have optimised the code to avoid various subroutine calls. Below is the encryption routine that I have used which should be somewhat tighter than the original - although the data pump should be kept fully fed in each case.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;register&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;ptrPlainTextInput &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;ptrTextIn&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;register&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;ptrCipherTextOutput &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;ptrTextOut&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_MD &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC_MD_ENC_ENCRYPT &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_MD_AS_UPDATE &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_MD_ALG_AES &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_MD_AAI_CBC&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// set the mode&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;iInstanceCommand &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; AES_COMMAND_AES_RESET_IV&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// if the initial vector is to be reset before start&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_CTX_0 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// zero IV&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_CTX_1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_CTX_2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_CTX_3 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ulDataLength &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt; ulThisLengthIn&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt; ulThisLengthOut&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ulDataLength &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xff0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthIn &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0xff0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthIn &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; ulDataLength&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulDataLength &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; ulThisLengthIn&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_DS &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; ulThisLengthIn&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// write the data size&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthIn &lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;long&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// the number of long words&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthOut &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; ulThisLengthIn&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ulThisLengthIn&lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// copy to the input FIFO and read from the output FIFO&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_FIFOSTA &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; LTC_FIFOSTA_IFF&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// if the input FIFO is full we must wait before adding further data&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_FIFOSTA &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; LTC_FIFOSTA_OFL_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// if there is at least one output result ready&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;ptrCipherTextOutput&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; LTC0_OFIFO&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthOut&lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_IFIFO &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;ptrPlainTextInput&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// long word aligned&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_FIFOSTA &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; LTC_FIFOSTA_OFL_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// if there is at least one output result ready&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;ptrCipherTextOutput&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; LTC0_OFIFO&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthOut&lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ulThisLengthOut &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_FIFOSTA &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; LTC_FIFOSTA_OFL_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// if there is at least one output result ready&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;ptrCipherTextOutput&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; LTC0_OFIFO&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulThisLengthOut&lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_STA &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; LTC_STA_DI&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// wait for completion&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;WRITE_ONE_TO_CLEAR&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_CW&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; LTC_CW_CDS&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// clear the data size&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;WRITE_ONE_TO_CLEAR&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_STA&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; LTC_STA_DI&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// reset the done interrupt&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LTC0_MD &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC_MD_ENC_ENCRYPT &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_MD_AS_UPDATE &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_MD_ALG_AES &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_MD_AAI_CBC&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// re-write the mode&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;WRITE_ONE_TO_CLEAR&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC0_CW&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;LTC_CW_CM &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CDS &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CICV &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CCR &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CKR &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CPKA &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CPKB &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CPKN &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CPKE &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_COF &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; LTC_CW_CIF&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// clear internal registers&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Feb 2017 06:22:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/LTC-AES-EncryptCbc-does-not-return-correct-results/m-p/652828#M39778</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-02-15T06:22:29Z</dc:date>
    </item>
  </channel>
</rss>

