nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase

這是抽象類別。

#include <src/lib/profiles/security/WeaveApplicationKeys.h>

Weave 群組鍵存放區類別的定義。

摘要

系統會呼叫這個類別中的函式,以便管理應用程式群組金鑰。

繼承

直接已知子類別:
  nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
  nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
  nl::Weave::DeviceLayer::Internal::GroupKeyStoreImplnl::Weave::Profiles::Security::AppKeys::DummyGroupKeyStore

受保護的屬性

LastUsedEpochKeyId
uint32_t
NextEpochKeyStartTime
uint32_t

公用函式

Clear(void)=0
virtual WEAVE_ERROR
DeleteGroupKey(uint32_t keyId)=0
virtual WEAVE_ERROR
DeleteGroupKeysOfAType(uint32_t keyType)=0
virtual WEAVE_ERROR
DeriveApplicationKey(uint32_t & appKeyId, const uint8_t *keySalt, uint8_t saltLen, const uint8_t *keyDiversifier, uint8_t diversifierLen, uint8_t *appKey, uint8_t keyBufSize, uint8_t keyLen, uint32_t & appGroupGlobalId)
衍生應用程式金鑰。
EnumerateGroupKeys(uint32_t keyType, uint32_t *keyIds, uint8_t keyIdsArraySize, uint8_t & keyCount)=0
virtual WEAVE_ERROR
GetCurrentAppKeyId(uint32_t keyId, uint32_t & curKeyId)
傳回目前的金鑰 ID。
GetCurrentUTCTime(uint32_t & utcTime)
virtual WEAVE_ERROR
取得目前平台 (世界標準時間) 時間 (以秒為單位)。
GetGroupKey(uint32_t keyId, WeaveGroupKey & groupKey)
取得應用程式群組金鑰。
RetrieveGroupKey(uint32_t keyId, WeaveGroupKey & key)=0
virtual WEAVE_ERROR
StoreGroupKey(const WeaveGroupKey & key)=0
virtual WEAVE_ERROR

受保護的函式

Init(void)
void
初始化本機群組鍵儲存庫參數。
OnEpochKeysChange(void)
void
傳回目前的金鑰 ID。
RetrieveLastUsedEpochKeyId(void)=0
virtual WEAVE_ERROR
StoreLastUsedEpochKeyId(void)=0
virtual WEAVE_ERROR

受保護的屬性

LastUsedEpochKeyId

uint32_t LastUsedEpochKeyId

NextEpochKeyStartTime

uint32_t NextEpochKeyStartTime

公用函式

清除

virtual WEAVE_ERROR Clear(
  void
)=0

DeleteGroupKey

virtual WEAVE_ERROR DeleteGroupKey(
  uint32_t keyId
)=0

DeleteGroupKeysOfAType

virtual WEAVE_ERROR DeleteGroupKeysOfAType(
  uint32_t keyType
)=0

DeriveApplicationKey

WEAVE_ERROR DeriveApplicationKey(
  uint32_t & appKeyId,
  const uint8_t *keySalt,
  uint8_t saltLen,
  const uint8_t *keyDiversifier,
  uint8_t diversifierLen,
  uint8_t *appKey,
  uint8_t keyBufSize,
  uint8_t keyLen,
  uint32_t & appGroupGlobalId
)

衍生應用程式金鑰。

目前支援三種應用程式金鑰:目前的應用程式金鑰、輪替應用程式金鑰及靜態應用程式金鑰。要求目前的應用程式金鑰時,函式會根據目前的系統時間和每個訓練週期鍵的開始時間參數,尋找並使用目前的週期索引鍵。

詳細說明
參數
[in,out] keyId
要求金鑰 ID 的參照。要求目前的應用程式金鑰時,這個欄位會更新為新類型 (輪替應用程式金鑰) 和用來產生應用程式金鑰的實際 Epoch 紀元金鑰 ID。
[in] keySalt
指向包含應用程式金鑰鹽值的緩衝區指標。
[in] saltLen
應用程式金鑰鹽長度。
[in] keyDiversifier
指標指向具有應用程式金鑰多樣性值的緩衝區。
[in] diversifierLen
應用程式金鑰分隔器的長度。
[out] appKey
指向將寫入衍生金鑰的緩衝區指標。
[in] keyBufSize
提供的金鑰緩衝區長度。
[in] keyLen
所要求金鑰內容的長度。
[out] appGroupGlobalId
相關聯金鑰的應用程式群組全域 ID。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_BUFFER_TOO_SMALL
如果提供的金鑰緩衝區空間不足。
WEAVE_ERROR_INVALID_KEY_ID
如果要求的金鑰 ID 無效。
WEAVE_ERROR_INVALID_ARGUMENT
如果平台金鑰儲存庫傳回無效的金鑰參數,或金鑰 ID 含有無效值,
other
平台金鑰儲存庫 API 傳回的其他平台專屬錯誤。

EnumerateGroupKeys

virtual WEAVE_ERROR EnumerateGroupKeys(
  uint32_t keyType,
  uint32_t *keyIds,
  uint8_t keyIdsArraySize,
  uint8_t & keyCount
)=0

GetCurrentAppKeyId

WEAVE_ERROR GetCurrentAppKeyId(
  uint32_t keyId,
  uint32_t & curKeyId
)

傳回目前的金鑰 ID。

根據目前的系統時間和每個週期鍵的開始時間參數,找出目前的週期索引鍵。如果系統缺少有效且正確的時間,就會傳回上次使用的 Epoch 紀元金鑰 ID。

詳細說明
參數
[in] keyId
應用程式金鑰 ID。
[out] curKeyId
應用程式目前的金鑰 ID。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_KEY_ID
如果輸入鍵 ID 的值無效。
WEAVE_ERROR_KEY_NOT_FOUND
在平台金鑰庫中找不到週期金鑰。
other
平台金鑰儲存庫 API 傳回的其他平台專屬錯誤。

GetCurrentUTCTime

virtual WEAVE_ERROR GetCurrentUTCTime(
  uint32_t & utcTime
)

取得目前平台 (世界標準時間) 時間 (以秒為單位)。

詳細說明
參數
[out] utcTime
時間值的參照。
傳回值
WEAVE_NO_ERROR
成功時。
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
如果平台不支援即時時鐘。
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
系統不會將系統的即時時鐘與正確的時間來源同步處理。
other
其他 Weave 或平台錯誤代碼。

GetGroupKey

WEAVE_ERROR GetGroupKey(
  uint32_t keyId,
  WeaveGroupKey & groupKey
)

取得應用程式群組金鑰。

這個函式可以衍生或擷取應用程式群組金鑰。這個函式支援的金鑰類型包括:架構密鑰、根金鑰、週期金鑰、群組主金鑰和中繼金鑰。

詳細說明
參數
[in] keyId
群組金鑰 ID。
[out] groupKey
群組索引鍵物件的參照。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_KEY_ID
如果要求的金鑰 ID 無效。
WEAVE_ERROR_INVALID_ARGUMENT
如果平台金鑰儲存庫傳回無效的金鑰參數,
other
平台金鑰儲存庫 API 傳回的其他平台專屬錯誤。

RetrieveGroupKey

virtual WEAVE_ERROR RetrieveGroupKey(
  uint32_t keyId,
  WeaveGroupKey & key
)=0

StoreGroupKey

virtual WEAVE_ERROR StoreGroupKey(
  const WeaveGroupKey & key
)=0

受保護的函式

Init

void Init(
  void
)

初始化本機群組鍵儲存庫參數。

OnEpochKeysChange

void OnEpochKeysChange(
  void
)

傳回目前的金鑰 ID。

當應用程式訓練週期索引鍵發生任何變更 (刪除或儲存) 時,將 Epoch 紀元鍵相關聯的成員變數設為預設值。實作 StoreGroupKey()、DeleteGroupKey() 和 DeleteGroupKeysOfAType() 函式的子類別,才能呼叫這個方法。

RetrieveLastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUsedEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0