<?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 [TapLink SDK iOS] Authentication with AES 128 not working in TapLinx SDK, TagWriter and TagInfo</title>
    <link>https://community.nxp.com/t5/TapLinx-SDK-TagWriter-and/TapLink-SDK-iOS-Authentication-with-AES-128-not-working/m-p/2324491#M242</link>
    <description>&lt;P&gt;Hello, I have read your guide&amp;nbsp;UG10045 and I have successfully integrated the Taplink iOS SDK in a demo Project.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In section 6.1 you describe an authenticationFlow with EV2 Card.&lt;/P&gt;&lt;P&gt;I have to use EV3 Cards, so I replicated that flow using a DesEV3Instance&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here my code:&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;STRONG&gt;private&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;STRONG&gt;func&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;authenticateWithCustomOrZero&lt;/SPAN&gt;(&lt;SPAN&gt;_&lt;/SPAN&gt; desfire: TL_DESFireEV3, &lt;SPAN&gt;completion&lt;/SPAN&gt;: &lt;SPAN&gt;&lt;STRONG&gt;@escaping&lt;/STRONG&gt;&lt;/SPAN&gt; (&lt;SPAN&gt;Bool&lt;/SPAN&gt;, &lt;SPAN&gt;Bool&lt;/SPAN&gt;) -&amp;gt; &lt;SPAN&gt;Void&lt;/SPAN&gt;) {&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.authenticate(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthenticationType: .&lt;SPAN&gt;native&lt;/SPAN&gt;, withAuthKeyType: .THREEDES, withCommandSetForAuth: .Native, withAuthkey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;) { firstAuth3D &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"firstAuth3D: &lt;/SPAN&gt;\(firstAuth3D)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.changeKey(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthKeyType: .AES128, withFromKey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;, withToKey: &lt;SPAN&gt;aesZero&lt;/SPAN&gt;) { firstChangeAES &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"firstChangeAES: &lt;/SPAN&gt;\(firstChangeAES)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.authenticate(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthenticationType: .AES, withAuthKeyType: .AES128, withCommandSetForAuth: .Native, withAuthkey: &lt;SPAN&gt;aesZero&lt;/SPAN&gt;) { firstAuthAES &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"firstAuthAES: &lt;/SPAN&gt;\(firstAuthAES)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.changeKey(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthKeyType: .THREEDES, withFromKey: &lt;SPAN&gt;aesZero&lt;/SPAN&gt;, withToKey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;) { lastChange3D &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"lastChange3D: &lt;/SPAN&gt;\(lastChange3D)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;desfire.authenticate(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthenticationType: .&lt;SPAN&gt;native&lt;/SPAN&gt;, withAuthKeyType: .THREEDES, withCommandSetForAuth: .Native, withAuthkey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;) { lastAuth3D &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"lastAuth3D: &lt;/SPAN&gt;\(lastAuth3D)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first authentication with 3DES, the change to aes key and then the authentication with Aes key works perfectly.&lt;/P&gt;&lt;P&gt;Then when I tried to change to old 3DES key I received a error and now the card is still "authenticated" with AES key&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For completism, the keys are&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;private&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;STRONG&gt;let&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;aesZero&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;Data&lt;SPAN&gt;(&lt;/SPAN&gt;repeating&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;0x00&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;count&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;private&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;STRONG&gt;let&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;Data&lt;SPAN&gt;(&lt;/SPAN&gt;repeating&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;0x00&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;count&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;24&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I received this error from SDK logs (see the attachments).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Exception Caught: com.nxp.nfclib.exceptions.PICCException: Integrity Error SW2 = 30&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Before doing others tests, I hope to know from you if my implementation is working as expected &amp;nbsp;and what that error means.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
    <pubDate>Fri, 27 Feb 2026 18:26:30 GMT</pubDate>
    <dc:creator>SamanaGG</dc:creator>
    <dc:date>2026-02-27T18:26:30Z</dc:date>
    <item>
      <title>[TapLink SDK iOS] Authentication with AES 128 not working</title>
      <link>https://community.nxp.com/t5/TapLinx-SDK-TagWriter-and/TapLink-SDK-iOS-Authentication-with-AES-128-not-working/m-p/2324491#M242</link>
      <description>&lt;P&gt;Hello, I have read your guide&amp;nbsp;UG10045 and I have successfully integrated the Taplink iOS SDK in a demo Project.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In section 6.1 you describe an authenticationFlow with EV2 Card.&lt;/P&gt;&lt;P&gt;I have to use EV3 Cards, so I replicated that flow using a DesEV3Instance&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here my code:&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;STRONG&gt;private&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;STRONG&gt;func&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;authenticateWithCustomOrZero&lt;/SPAN&gt;(&lt;SPAN&gt;_&lt;/SPAN&gt; desfire: TL_DESFireEV3, &lt;SPAN&gt;completion&lt;/SPAN&gt;: &lt;SPAN&gt;&lt;STRONG&gt;@escaping&lt;/STRONG&gt;&lt;/SPAN&gt; (&lt;SPAN&gt;Bool&lt;/SPAN&gt;, &lt;SPAN&gt;Bool&lt;/SPAN&gt;) -&amp;gt; &lt;SPAN&gt;Void&lt;/SPAN&gt;) {&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.authenticate(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthenticationType: .&lt;SPAN&gt;native&lt;/SPAN&gt;, withAuthKeyType: .THREEDES, withCommandSetForAuth: .Native, withAuthkey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;) { firstAuth3D &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"firstAuth3D: &lt;/SPAN&gt;\(firstAuth3D)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.changeKey(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthKeyType: .AES128, withFromKey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;, withToKey: &lt;SPAN&gt;aesZero&lt;/SPAN&gt;) { firstChangeAES &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"firstChangeAES: &lt;/SPAN&gt;\(firstChangeAES)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.authenticate(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthenticationType: .AES, withAuthKeyType: .AES128, withCommandSetForAuth: .Native, withAuthkey: &lt;SPAN&gt;aesZero&lt;/SPAN&gt;) { firstAuthAES &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"firstAuthAES: &lt;/SPAN&gt;\(firstAuthAES)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;desfire.changeKey(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthKeyType: .THREEDES, withFromKey: &lt;SPAN&gt;aesZero&lt;/SPAN&gt;, withToKey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;) { lastChange3D &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"lastChange3D: &lt;/SPAN&gt;\(lastChange3D)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;desfire.authenticate(withCardKeyNo: &lt;SPAN&gt;0&lt;/SPAN&gt;, withAuthenticationType: .&lt;SPAN&gt;native&lt;/SPAN&gt;, withAuthKeyType: .THREEDES, withCommandSetForAuth: .Native, withAuthkey: &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;) { lastAuth3D &lt;SPAN&gt;&lt;STRONG&gt;in&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;&lt;SPAN&gt;os_log&lt;/SPAN&gt;(&lt;SPAN&gt;"Internal Log&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;- %{public}@"&lt;/SPAN&gt;, &lt;SPAN&gt;log&lt;/SPAN&gt;: OSLog(subsystem: &lt;SPAN&gt;Bundle&lt;/SPAN&gt;.&lt;SPAN&gt;main&lt;/SPAN&gt;.&lt;SPAN&gt;bundleIdentifier&lt;/SPAN&gt;!, category: &lt;SPAN&gt;"DemoLog"&lt;/SPAN&gt;), &lt;SPAN&gt;type&lt;/SPAN&gt;: .&lt;SPAN&gt;error&lt;/SPAN&gt;, &lt;SPAN&gt;"lastAuth3D: &lt;/SPAN&gt;\(lastAuth3D)&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&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; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first authentication with 3DES, the change to aes key and then the authentication with Aes key works perfectly.&lt;/P&gt;&lt;P&gt;Then when I tried to change to old 3DES key I received a error and now the card is still "authenticated" with AES key&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For completism, the keys are&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;private&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;STRONG&gt;let&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;aesZero&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;Data&lt;SPAN&gt;(&lt;/SPAN&gt;repeating&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;0x00&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;count&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;16&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;private&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;STRONG&gt;let&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN&gt;threeDESZero&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;Data&lt;SPAN&gt;(&lt;/SPAN&gt;repeating&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;0x00&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;count&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;24&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I received this error from SDK logs (see the attachments).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Exception Caught: com.nxp.nfclib.exceptions.PICCException: Integrity Error SW2 = 30&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Before doing others tests, I hope to know from you if my implementation is working as expected &amp;nbsp;and what that error means.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Fri, 27 Feb 2026 18:26:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/TapLinx-SDK-TagWriter-and/TapLink-SDK-iOS-Authentication-with-AES-128-not-working/m-p/2324491#M242</guid>
      <dc:creator>SamanaGG</dc:creator>
      <dc:date>2026-02-27T18:26:30Z</dc:date>
    </item>
    <item>
      <title>Re: [TapLink SDK iOS] Authentication with AES 128 not working</title>
      <link>https://community.nxp.com/t5/TapLinx-SDK-TagWriter-and/TapLink-SDK-iOS-Authentication-with-AES-128-not-working/m-p/2336211#M252</link>
      <description>&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;Hello sir,&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;Thank you for sharing your code. My apologies for the delay.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;I believe the root cause is very likely to be due to the threeDESZero odd parity per byte. After authenticating with an AES key and, the changing to the 3DES&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;You could quickly test this instead of using a 0x00, try a non-zero key to ensure odd parity byte.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;If this still fails, please try changing from 3DES -&amp;gt; AES -&amp;gt; 3DES in two separated sessions but, please try using non-zero keys.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;I hope this helps&lt;/P&gt;</description>
      <pubDate>Thu, 19 Mar 2026 23:27:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/TapLinx-SDK-TagWriter-and/TapLink-SDK-iOS-Authentication-with-AES-128-not-working/m-p/2336211#M252</guid>
      <dc:creator>Fabian_R</dc:creator>
      <dc:date>2026-03-19T23:27:18Z</dc:date>
    </item>
  </channel>
</rss>

