<?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>Bluetooth OOB public key and PSA</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/127332/bluetooth-oob-public-key-and-psa</link><description>I am creating a bluetooth mesh using nrf54L15 and would like to make use of public key OOB as a means of whitelisting devices (so only my devices can join the mesh). The idea is that each device will be provisioned during manufacturing and in this process</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 09 Mar 2026 15:01:44 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/127332/bluetooth-oob-public-key-and-psa" /><item><title>RE: Bluetooth OOB public key and PSA</title><link>https://devzone.nordicsemi.com/thread/562841?ContentTypeID=1</link><pubDate>Mon, 09 Mar 2026 15:01:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8263d2ec-6078-4f89-84a1-28f55948cb12</guid><dc:creator>SamuelAustin</dc:creator><description>&lt;p&gt;Hi Einar,&lt;/p&gt;
&lt;p&gt;Thanks for the confirmation. At least the keys are not just sitting in the firmware but are only retrieved during runtime.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth OOB public key and PSA</title><link>https://devzone.nordicsemi.com/thread/562838?ContentTypeID=1</link><pubDate>Mon, 09 Mar 2026 14:46:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3f46d584-7022-4737-99bd-1ab8e98fb8a1</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;You need to keep the&amp;nbsp;bt_mesh_prov struct in memory the whole time. Moreover, I am sorry to say I read your question too quickly. Most aspects of Mesh security is handled using PSA crypto as&amp;nbsp;described in the link from my previous post (you can also see he implementation in &lt;a href="https://github.com/nrfconnect/sdk-zephyr/blob/c02ec1f645e4e1e16ac7ebb029e8b2a3d0082ab5/subsys/bluetooth/mesh/crypto_psa.c"&gt;crypto_psa.c&lt;/a&gt;), but for OOB the implementation continue to use the raw key from the&amp;nbsp;bt_mesh_prov instance that must remain in memory. This&amp;nbsp;follows from how it is currently implemented in the Zephyr Bluetooth host.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth OOB public key and PSA</title><link>https://devzone.nordicsemi.com/thread/562834?ContentTypeID=1</link><pubDate>Mon, 09 Mar 2026 14:16:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:086bffe1-1b7c-45de-8d8f-1486ee8316de</guid><dc:creator>SamuelAustin</dc:creator><description>&lt;p&gt;Hi Einar,&lt;br /&gt;&lt;br /&gt;Does this mean that I don&amp;#39;t need to keep the keys in memory after I have called bt_mesh_init because it creates a copy?&lt;br /&gt;&lt;br /&gt;Currently I do this and keep the keys in memory:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;exportPrivateKey(dev_priv_key);
exportPublicKey(dev_pub_key);

err = bt_mesh_init(&amp;amp;provisioner_prov, &amp;amp;provisioner_comp);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;And then the same question for the whole bt_mesh_prov struct, can I create it on the fly and then let it go out of scope after bt_mesh_init?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Bluetooth OOB public key and PSA</title><link>https://devzone.nordicsemi.com/thread/562832?ContentTypeID=1</link><pubDate>Mon, 09 Mar 2026 14:09:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:98b5bc64-da30-4db3-9c01-526d514dac89</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;During provisioning the keys are provided via the&amp;nbsp;bt_mesh_prov as raw keys, and that is the only supported way. However, after provisioning the key is protected. The keys are stored in the internal trusted storage, and referred to by an identifier, and not directly accessible from the non-secure application. See &lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/protocols/bt/bt_mesh/configuring.html#security_toolbox"&gt;Security toolbox&lt;/a&gt;&amp;nbsp;from the Bluetooth Mesh documentation for details.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>