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::GroupKeyStoreImpl
  nl::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
)

產生應用程式金鑰。

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

詳細資料
參數
[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 時間鍵的開始時間參數找出目前的 Epoch 時間鍵。如果系統沒有有效且正確的時間,系統會傳回上次使用的 Epoch 時間金鑰 ID。

詳細資料
參數
[in] keyId
應用程式金鑰 ID。
[out] curKeyId
應用程式目前的金鑰 ID。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_KEY_ID
如果輸入鍵 ID 包含無效值,
WEAVE_ERROR_KEY_NOT_FOUND
如果在平台金鑰存放區中找不到 Epoch 金鑰,
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
)

取得應用程式群組金鑰。

這個函式會衍生或擷取應用程式群組金鑰。這個函式支援的金鑰類型如下:布料密鑰、根金鑰、Epoch 金鑰、群組主金鑰和中繼金鑰。

詳細資料
參數
[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 金鑰集發生任何變更 (刪除或儲存) 時,將與 Epoch 金鑰相關聯的成員變數設為預設值。實作 StoreGroupKey()、DeleteGroupKey() 和 DeleteGroupKeysOfAType() 函式的子類別必須呼叫這個方法。

RetrieveLastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUsedEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0