From 336a172a60541fdc60bc887c085397bdd1469fc9 Mon Sep 17 00:00:00 2001 From: Alex Tsitsiura Date: Thu, 25 Apr 2024 14:52:58 +0300 Subject: [PATCH] [Telink] Fix EnableKey parameter of factory data --- examples/platform/telink/common/src/AppTaskCommon.cpp | 6 ++++++ scripts/tools/telink/mfg_tool.py | 1 + src/platform/telink/FactoryDataProvider.cpp | 8 ++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/examples/platform/telink/common/src/AppTaskCommon.cpp b/examples/platform/telink/common/src/AppTaskCommon.cpp index 3179e960d32378..a68a24f501e508 100644 --- a/examples/platform/telink/common/src/AppTaskCommon.cpp +++ b/examples/platform/telink/common/src/AppTaskCommon.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -271,8 +272,13 @@ CHIP_ERROR AppTaskCommon::InitCommonParts(void) // Init ZCL Data Model and start server static CommonCaseDeviceServerInitParams initParams; + static SimpleTestEventTriggerDelegate sTestEventTriggerDelegate{}; + static OTATestEventTriggerHandler sOtaTestEventTriggerHandler{}; + VerifyOrDie(sTestEventTriggerDelegate.Init(ByteSpan(sTestEventTriggerEnableKey)) == CHIP_NO_ERROR); + VerifyOrDie(sTestEventTriggerDelegate.AddHandler(&sOtaTestEventTriggerHandler) == CHIP_NO_ERROR); (void) initParams.InitializeStaticResourcesBeforeServerInit(); initParams.appDelegate = &sCallbacks; + initParams.testEventTriggerDelegate = &sTestEventTriggerDelegate; ReturnErrorOnFailure(chip::Server::GetInstance().Init(initParams)); #if APP_SET_DEVICE_INFO_PROVIDER diff --git a/scripts/tools/telink/mfg_tool.py b/scripts/tools/telink/mfg_tool.py index c55e1fe4ca3c4a..f73595a435eb5c 100644 --- a/scripts/tools/telink/mfg_tool.py +++ b/scripts/tools/telink/mfg_tool.py @@ -671,6 +671,7 @@ def base64_str(s): return base64.b64decode(s) check_str_range(args.hw_ver_str, 1, 64, 'Hardware version string') check_str_range(args.mfg_date, 8, 16, 'Manufacturing date') check_str_range(args.rd_id_uid, 16, 32, 'Rotating device Unique id') + check_str_range(args.enable_key, 32, 32, 'Enable Key') # Validates the attestation related arguments # DAC key and DAC cert both should be present or none diff --git a/src/platform/telink/FactoryDataProvider.cpp b/src/platform/telink/FactoryDataProvider.cpp index 806cdb2cfe9391..877b937369b662 100644 --- a/src/platform/telink/FactoryDataProvider.cpp +++ b/src/platform/telink/FactoryDataProvider.cpp @@ -18,7 +18,7 @@ #include "FactoryDataProvider.h" #include "CHIPDevicePlatformConfig.h" #include - +#include #if CONFIG_CHIP_CERTIFICATION_DECLARATION_STORAGE #include #include @@ -329,11 +329,11 @@ template CHIP_ERROR FactoryDataProvider::GetEnableKey(MutableByteSpan & enableKey) { ReturnErrorCodeIf(!mFactoryData.enable_key.data, CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND); - ReturnErrorCodeIf(enableKey.size() < mFactoryData.enable_key.len, CHIP_ERROR_BUFFER_TOO_SMALL); + ReturnErrorCodeIf(enableKey.size() < mFactoryData.enable_key.len/2, CHIP_ERROR_BUFFER_TOO_SMALL); - memcpy(enableKey.data(), mFactoryData.enable_key.data, mFactoryData.enable_key.len); + Encoding::HexToBytes((const char*)mFactoryData.enable_key.data, mFactoryData.enable_key.len, enableKey.data(), enableKey.size()); - enableKey.reduce_size(mFactoryData.enable_key.len); + enableKey.reduce_size(mFactoryData.enable_key.len/2); return CHIP_NO_ERROR; }