diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/include/openthread/instance.h b/simplicity_sdk_2024.12.0/util/third_party/openthread/include/openthread/instance.h
index a2e15a5..6608d3a 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/include/openthread/instance.h
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/include/openthread/instance.h
@@ -86,18 +86,6 @@ typedef struct otInstance otInstance;
  */
 otInstance *otInstanceInit(void *aInstanceBuffer, size_t *aInstanceBufferSize);
 
-/**
- * Returns the index of the OpenThread instance.
- *
- * @param[in] aInstance The reference of the OpenThread instance to get index.
- *
- * @returns The index of the OpenThread instance.
- *
- */
-
-uint8_t otInstanceGetIdx(otInstance *aInstance);
-
-
 /**
  * Initializes the static single instance of the OpenThread library.
  *
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/api/instance_api.cpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/api/instance_api.cpp
index 848322e..39190ca 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/api/instance_api.cpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/api/instance_api.cpp
@@ -57,12 +57,6 @@ using namespace ot;
 
 #if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
 #if OPENTHREAD_CONFIG_MULTIPLE_STATIC_INSTANCE_ENABLE
-
-uint8_t otInstanceGetIdx(otInstance *aInstance)
-{
-    return Instance::GetIdx(AsCoreTypePtr(aInstance));
-}
-
 otInstance *otInstanceInitMultiple(uint8_t aIdx)
 {
     Instance *instance;
@@ -82,10 +76,6 @@ otInstance *otInstanceInit(void *aInstanceBuffer, size_t *aInstanceBufferSize)
 }
 #else
 otInstance *otInstanceInitSingle(void) { return &Instance::InitSingle(); }
-uint8_t otInstanceGetIdx(otInstance *aInstance)
-{
-  return 0;
-}
 #endif // #if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
 
 uint32_t otInstanceGetId(otInstance *aInstance) { return AsCoreType(aInstance).GetId(); }
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.cpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.cpp
index 890ba04..726daa9 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.cpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.cpp
@@ -56,15 +56,15 @@ exit:
     return error;
 }
 
-void Storage::DestroyPersistentKeys(uint32_t keybase)
+void Storage::DestroyPersistentKeys(void)
 {
-    DestroyKey(keybase + kNetworkKeyRef);
-    DestroyKey(keybase + kPskcRef);
-    DestroyKey(keybase + kActiveDatasetNetworkKeyRef);
-    DestroyKey(keybase + kActiveDatasetPskcRef);
-    DestroyKey(keybase + kPendingDatasetNetworkKeyRef);
-    DestroyKey(keybase + kPendingDatasetPskcRef);
-    DestroyKey(keybase + kEcdsaRef);
+    DestroyKey(kNetworkKeyRef);
+    DestroyKey(kPskcRef);
+    DestroyKey(kActiveDatasetNetworkKeyRef);
+    DestroyKey(kActiveDatasetPskcRef);
+    DestroyKey(kPendingDatasetNetworkKeyRef);
+    DestroyKey(kPendingDatasetPskcRef);
+    DestroyKey(kEcdsaRef);
 }
 #endif
 
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.hpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.hpp
index 9a64a4c..7bcae5b 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.hpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/crypto/storage.hpp
@@ -102,7 +102,6 @@ constexpr KeyRef kActiveDatasetPskcRef        = OPENTHREAD_CONFIG_PSA_ITS_NVM_OF
 constexpr KeyRef kPendingDatasetNetworkKeyRef = OPENTHREAD_CONFIG_PSA_ITS_NVM_OFFSET + 5;
 constexpr KeyRef kPendingDatasetPskcRef       = OPENTHREAD_CONFIG_PSA_ITS_NVM_OFFSET + 6;
 constexpr KeyRef kEcdsaRef                    = OPENTHREAD_CONFIG_PSA_ITS_NVM_OFFSET + 7;
-constexpr KeyRef KeyRefMaxOffset              = kEcdsaRef + 1;
 
 /**
  * Determine if a given `KeyRef` is valid or not.
@@ -185,7 +184,7 @@ inline bool HasKey(KeyRef aKeyRef) { return otPlatCryptoHasKey(aKeyRef); }
 /**
  * Delete all the persistent keys stored in PSA ITS.
  */
-void DestroyPersistentKeys(uint32_t keybase);
+void DestroyPersistentKeys(void);
 
 } // namespace Storage
 
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/instance/instance.cpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/instance/instance.cpp
index 86876a7..fc00ce7 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/instance/instance.cpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/instance/instance.cpp
@@ -340,7 +340,9 @@ Instance &Instance::Get(uint8_t aIdx)
 
 uint8_t Instance::GetIdx(Instance *aInstance)
 {
-    return static_cast<uint8_t>((reinterpret_cast<uint64_t *>(aInstance) - gMultiInstanceRaw) / INSTANCE_SIZE_ALIGNED);
+    return static_cast<uint8_t>(
+        (reinterpret_cast<uint8_t *>(aInstance) - reinterpret_cast<uint8_t *>(gMultiInstanceRaw)) /
+        INSTANCE_SIZE_ALIGNED);
 }
 
 #endif // #if OPENTHREAD_CONFIG_MULTIPLE_STATIC_INSTANCE_ENABLE
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/meshcop/dataset_manager.cpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/meshcop/dataset_manager.cpp
index 66c8304..c3dca49 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/meshcop/dataset_manager.cpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/meshcop/dataset_manager.cpp
@@ -769,9 +769,7 @@ void DatasetManager::DestroySecurelyStoredKeys(void) const
 {
     for (const SecurelyStoredTlv &entry : kSecurelyStoredTlvs)
     {
-	uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-        Crypto::Storage::KeyRef keyRef =  entry.GetKeyRef(mType) + (iid * Crypto::Storage::KeyRefMaxOffset);
-        Crypto::Storage::DestroyKey(keyRef);    
+        Crypto::Storage::DestroyKey(entry.GetKeyRef(mType));
     }
 }
 
@@ -779,9 +777,7 @@ void DatasetManager::MoveKeysToSecureStorage(Dataset &aDataset) const
 {
     for (const SecurelyStoredTlv &entry : kSecurelyStoredTlvs)
     {
-        uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-        Crypto::Storage::KeyRef keyRef =  entry.GetKeyRef(mType) + (iid * Crypto::Storage::KeyRefMaxOffset);
-        SaveTlvInSecureStorageAndClearValue(aDataset, entry.mTlvType, keyRef);    
+        SaveTlvInSecureStorageAndClearValue(aDataset, entry.mTlvType, entry.GetKeyRef(mType));
     }
 }
 
@@ -796,10 +792,7 @@ void DatasetManager::EmplaceSecurelyStoredKeys(Dataset &aDataset) const
 
     for (const SecurelyStoredTlv &entry : kSecurelyStoredTlvs)
     {
-
-	uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-        Crypto::Storage::KeyRef keyRef =  entry.GetKeyRef(mType) + (iid * Crypto::Storage::KeyRefMaxOffset);
-        if (ReadTlvFromSecureStorage(aDataset, entry.mTlvType, keyRef) != kErrorNone)    
+        if (ReadTlvFromSecureStorage(aDataset, entry.mTlvType, entry.GetKeyRef(mType)) != kErrorNone)
         {
             moveKeys = true;
         }
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/net/srp_client.cpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/net/srp_client.cpp
index 3f19c87..b7150ff 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/net/srp_client.cpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/net/srp_client.cpp
@@ -1109,8 +1109,7 @@ Error Client::PrepareUpdateMessage(MsgInfo &aInfo)
     aInfo.mRecordCount      = 0;
 
 #if OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
-    uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-    aInfo.mKeyInfo.SetKeyRef(kSrpEcdsaKeyRef + (iid * Crypto::Storage::KeyRefMaxOffset));
+    aInfo.mKeyInfo.SetKeyRef(kSrpEcdsaKeyRef);
 #endif
 
     SuccessOrExit(error = ReadOrGenerateKey(aInfo.mKeyInfo));
diff --git a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/thread/key_manager.cpp b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/thread/key_manager.cpp
index 689ecbf..8b8eb90 100644
--- a/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/thread/key_manager.cpp
+++ b/simplicity_sdk_2024.12.0/util/third_party/openthread/src/core/thread/key_manager.cpp
@@ -586,8 +586,7 @@ void KeyManager::StoreNetworkKey(const NetworkKey &aNetworkKey, bool aOverWriteE
 {
     NetworkKeyRef keyRef;
 
-    uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-    keyRef = Crypto::Storage::kNetworkKeyRef + (iid * Crypto::Storage::KeyRefMaxOffset);
+    keyRef = Crypto::Storage::kNetworkKeyRef;
 
     if (!aOverWriteExisting)
     {
@@ -618,8 +617,7 @@ exit:
 
 void KeyManager::StorePskc(const Pskc &aPskc)
 {
-    uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-    PskcRef keyRef = Crypto::Storage::kPskcRef + (iid * Crypto::Storage::KeyRefMaxOffset);
+    PskcRef keyRef = Crypto::Storage::kPskcRef;
 
     Crypto::Storage::DestroyKey(keyRef);
 
@@ -673,13 +671,7 @@ void KeyManager::DestroyTemporaryKeys(void)
     Get<Mac::Mac>().ClearMode2Key();
 }
 
-void KeyManager::DestroyPersistentKeys(void) {
-
-  uint32_t iid = otInstanceGetIdx(reinterpret_cast<otInstance *>(&InstanceLocator::GetInstance()));
-  uint32_t keyoffset = iid * Crypto::Storage::KeyRefMaxOffset;
-
-  Crypto::Storage::DestroyPersistentKeys(keyoffset);
-}
+void KeyManager::DestroyPersistentKeys(void) { Crypto::Storage::DestroyPersistentKeys(); }
 #endif // OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
 
 } // namespace ot
