From 2d38c59a5a88e8d4c09406676e993af30acd95e4 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Mon, 20 Jul 2020 23:19:10 -0700 Subject: [PATCH] [key-manager] add GenerateRandom() to MasterKey class (#5260) --- src/core/meshcop/dataset_manager_ftd.cpp | 2 +- src/core/thread/key_manager.hpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/core/meshcop/dataset_manager_ftd.cpp b/src/core/meshcop/dataset_manager_ftd.cpp index fd67a9230..55a3313d3 100644 --- a/src/core/meshcop/dataset_manager_ftd.cpp +++ b/src/core/meshcop/dataset_manager_ftd.cpp @@ -318,7 +318,7 @@ otError ActiveDataset::CreateNewNetwork(otOperationalDataset &aDataset) aDataset.mActiveTimestamp = 1; - SuccessOrExit(error = Random::Crypto::FillBuffer(aDataset.mMasterKey.m8, sizeof(aDataset.mMasterKey))); + SuccessOrExit(error = static_cast(aDataset.mMasterKey).GenerateRandom()); SuccessOrExit(error = static_cast(aDataset.mPskc).GenerateRandom()); SuccessOrExit(error = Random::Crypto::FillBuffer(aDataset.mExtendedPanId.m8, sizeof(aDataset.mExtendedPanId))); diff --git a/src/core/thread/key_manager.hpp b/src/core/thread/key_manager.hpp index c9c82d607..a34b0d2c0 100644 --- a/src/core/thread/key_manager.hpp +++ b/src/core/thread/key_manager.hpp @@ -67,6 +67,17 @@ namespace ot { OT_TOOL_PACKED_BEGIN class MasterKey : public otMasterKey, public Equatable { +public: +#if !OPENTHREAD_RADIO + /** + * This method generates a cryptographically secure random sequence to populate the Thread Master Key. + * + * @retval OT_ERROR_NONE Successfully generated a random Thread Master Key. + * @retval OT_ERROR_FAILED Failed to generate random sequence. + * + */ + otError GenerateRandom(void) { return Random::Crypto::FillBuffer(m8, sizeof(m8)); } +#endif } OT_TOOL_PACKED_END; /**