Skip to content

Commit

Permalink
[Telink] Fix EnableKey parameter of factory data
Browse files Browse the repository at this point in the history
  • Loading branch information
s07641069 committed Apr 25, 2024
1 parent 85fb3c4 commit 945a6de
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
8 changes: 6 additions & 2 deletions examples/platform/telink/common/src/AppTaskCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

#include <DeviceInfoProviderImpl.h>
#include <app/clusters/identify-server/identify-server.h>
#include <app/clusters/ota-requestor/OTATestEventTriggerHandler.h>
#include <app/server/OnboardingCodesUtil.h>
#include <app/server/Server.h>
#include <app/util/attribute-storage.h>
Expand Down Expand Up @@ -97,11 +98,9 @@ Identify sIdentify = {

#endif

#if CONFIG_CHIP_FACTORY_DATA
// NOTE! This key is for test/certification only and should not be available in production devices!
uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
#endif

class AppCallbacks : public AppDelegate
{
Expand Down Expand Up @@ -271,8 +270,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
Expand Down
1 change: 1 addition & 0 deletions scripts/tools/telink/mfg_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions src/platform/telink/FactoryDataProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include "FactoryDataProvider.h"
#include "CHIPDevicePlatformConfig.h"
#include <crypto/CHIPCryptoPAL.h>

#include <lib/support/BytesToHex.h>
#if CONFIG_CHIP_CERTIFICATION_DECLARATION_STORAGE
#include <credentials/CertificationDeclaration.h>
#include <platform/Zephyr/ZephyrConfig.h>
Expand Down Expand Up @@ -329,11 +329,11 @@ template <class FlashFactoryData>
CHIP_ERROR FactoryDataProvider<FlashFactoryData>::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;
}
Expand Down

0 comments on commit 945a6de

Please sign in to comment.