<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/126073/production-utility-for-flashing-and-key-provisioning</link><description>We are using the nRF54L15 SoC with FOTA functionality. We have enabled secure FOTA by signing the firmware image and provisioning the public key into the SoC’s KMU. For production, we want to automate both the KMU key provisioning and flashing the firmware</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 06 Jan 2026 10:16:22 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/126073/production-utility-for-flashing-and-key-provisioning" /><item><title>RE: Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/thread/558001?ContentTypeID=1</link><pubDate>Tue, 06 Jan 2026 10:16:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:66cb7d1f-1dc8-4714-9109-6eafa99eb72e</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Darav,&amp;nbsp;&lt;br /&gt;The process looks fine to me.&amp;nbsp;&lt;br /&gt;Could you explain the id you used&amp;nbsp;0x7fff30e2.&lt;br /&gt;As far as I know when you program the key into KMU you simply select the slot you want to put the key to. See the documentation in the python file:&amp;nbsp;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;    parser.add_argument(
        &amp;quot;--id&amp;quot;,
        help=&amp;quot;Key identifier (KMU slot number (0-255) for KMU keys)&amp;quot;,
        type=lambda number_string: int(number_string, 0),
        required=True,
    )&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/thread/557782?ContentTypeID=1</link><pubDate>Thu, 01 Jan 2026 06:04:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2cbfb0c6-c7a5-44b0-a263-b7a9139b0e67</guid><dc:creator>darav</dc:creator><description>&lt;p&gt;We are currently using the following procedure to provision keys into the &lt;strong data-start="288" data-end="307"&gt;KMU of nRF54L15&lt;/strong&gt;, and then flashing the firmware using the respective Python scripts.&lt;br data-start="376" data-end="379" /&gt; Could you please confirm whether this is the recommended approach, or if there is a better or more efficient method?&lt;br /&gt;&lt;strong data-start="521" data-end="575"&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong data-start="521" data-end="575"&gt;Generate the private key used for firmware signing&lt;/strong&gt;&lt;/p&gt;
&lt;div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre!"&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;pre class="ui-code" data-mode="text"&gt;openssl genpkey -algorithm Ed25519 -out MANIFEST_APPLICATION_GEN1_priv.pem&lt;/pre&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre!"&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre!"&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;strong&gt;Generate the public key from the private key&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;openssl pkey -in MANIFEST_APPLICATION_GEN1_priv.pem -pubout -out MANIFEST_APPLICATION_GEN1_pub.pem&lt;/pre&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;strong data-start="823" data-end="879"&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;strong data-start="823" data-end="879"&gt;Generate the JSON file for the key to be provisioned&lt;/strong&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;
&lt;div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"&gt;
&lt;div&gt;
&lt;div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;/div&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;pre class="ui-code" data-mode="text"&gt;python generate_psa_key_attributes.py --usage VERIFY_MESSAGE_EXPORT --id 0x7fff30e2 --type ECC_TWISTED_EDWARDS --size 255 --algorithm EDDSA_PURE --location LOCATION_CRACEN_KMU --key-from-file .\MANIFEST_APPLICATION_GEN1_pub.pem --file keys.json --lifetime PERSISTENCE_READ_ONLY&lt;/pre&gt;&lt;/div&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;Also, what exact does the &amp;quot;--id&amp;quot; parameter mean?&lt;/div&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;strong data-start="1225" data-end="1259"&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;strong data-start="1225" data-end="1259"&gt;Provision the key into the KMU&lt;/strong&gt;&lt;/div&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;strong data-start="1225" data-end="1259"&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;/div&gt;
&lt;pre class="ui-code" data-mode="text"&gt;nrfutil device x-provision-keys --key-file keys.json --traits jlink&lt;/pre&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;
&lt;div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"&gt;
&lt;div&gt;
&lt;div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"&gt;Program the firmware -&amp;nbsp;&lt;/div&gt;
&lt;div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"&gt;&lt;span data-teams="true"&gt;&lt;pre class="ui-code" data-mode="text"&gt;nrfutil device program --firmware &amp;quot;.\build\merged.hex&amp;quot; --traits jlink --options reset=RESET_DEFAULT,chip_erase_mode=ERASE_RANGES_TOUCHED_BY_FIRMWARE,mcu_end_state=NRFDL_MCU_STATE_APPLICATION&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;code class="whitespace-pre!"&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre!"&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/thread/557068?ContentTypeID=1</link><pubDate>Tue, 16 Dec 2025 10:18:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8e82d69d-4eb6-48fa-a74c-1a7954f270eb</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Darav,&amp;nbsp;&lt;br /&gt;I believe you would need to use&amp;nbsp;generate_psa_key_attributes.py for the task. You can take a look here:&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/app_dev/device_guides/nrf54h/ug_nrf54h20_keys.html#generating_key_metadata"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/app_dev/device_guides/nrf54h/ug_nrf54h20_keys.html#generating_key_metadata&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You would need to generate a public key from the private one using&amp;nbsp;&lt;span&gt;imgtool.py getpub -k private_key.pem -e pem &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; public_key.pem&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/thread/557058?ContentTypeID=1</link><pubDate>Tue, 16 Dec 2025 09:43:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e6bb7a9b-2632-4f72-8f6c-a08dde9e1631</guid><dc:creator>darav</dc:creator><description>&lt;p&gt;Checked out the links you have attached which demonstrate the provisioning of keys using nrfutil. but the tool requires the key value to be in json format, while we have generated the key in .pem format. How can we provision .pem type of keys ?&lt;br /&gt;&lt;br /&gt;what we are currently following is :&lt;br /&gt;&lt;br /&gt;generating the private key -&amp;gt;&amp;nbsp;&lt;span class="NormalTextRun SCXW184548218 BCX8"&gt;python&lt;/span&gt;&lt;span class="NormalTextRun SCXW184548218 BCX8"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;C:\ncs\v3.0.2\bootloader\mcuboot\scripts\imgtool.py keygen -t ed25519 -k&lt;/span&gt;&lt;span class="NormalTextRun SCXW184548218 BCX8"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW184548218 BCX8"&gt;private_key.pem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;provisioning the private key into the SOC KMU -&amp;gt;&amp;nbsp;&lt;span class="NormalTextRun SCXW250631766 BCX8"&gt;west&lt;/span&gt;&lt;span class="NormalTextRun SCXW250631766 BCX8"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW250631766 BCX8"&gt;ncs&lt;/span&gt;&lt;span class="NormalTextRun SCXW250631766 BCX8"&gt;-provision upload -s nrf54l15 -k&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW250631766 BCX8"&gt;private_key.pem&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/thread/556982?ContentTypeID=1</link><pubDate>Mon, 15 Dec 2025 13:45:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:05c26ddc-b667-4d06-8ea0-dfa467e631ac</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Darav,&amp;nbsp;&lt;br /&gt;I&amp;#39;m sorry for the late reply.&amp;nbsp;&lt;br /&gt;As far as I know you don&amp;#39;t have to install the full NCS toolchain to do the KUM key provisioning and programming.&amp;nbsp;&lt;br /&gt;Could you let me know how you do these task currently ?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Have you used nrfutil device commandline tool for the tasks ?&amp;nbsp;&lt;br /&gt;You can take a look here:&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-device/guides/provisioning_keys.html"&gt;https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-device/guides/provisioning_keys.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here:&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-device/guides/programming_nrf54L15.html"&gt;https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-device/guides/programming_nrf54L15.html&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Production utility for flashing and key provisioning</title><link>https://devzone.nordicsemi.com/thread/556946?ContentTypeID=1</link><pubDate>Mon, 15 Dec 2025 05:40:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4a0814be-43f6-4516-a871-a4b71834a3df</guid><dc:creator>darav</dc:creator><description>&lt;p&gt;Hello, Any update ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>