透過集合功能整理內容 你可以依據偏好儲存及分類內容。

nl::Weave::Profiles::安全性::AppKeys::GroupKeyStoreBase

此為抽象類別。

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

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

總結

這個類別中的函式稱為呼叫以管理應用程式群組金鑰。

繼承

直接已知子類別:
nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
nl::Weave::DeviceLayer::InternalKey111011}

受保護的屬性

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
取得目前的平台 UTC 時間 (以秒為單位)。
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

受保護的屬性

上次使用 Epoch 金鑰 ID

uint32_t LastUsedEpochKeyId

NextEpochKeyStartTime

uint32_t NextEpochKeyStartTime

公開函式

清除

virtual WEAVE_ERROR Clear(
  void
)=0

刪除群組金鑰

virtual WEAVE_ERROR DeleteGroupKey(
  uint32_t keyId
)=0

刪除群組金鑰鍵類型

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 金鑰的開始時間參數,尋找並使用現有的 epoch 金鑰。

詳細資料
參數
[in,out] keyId
要求金鑰 ID 的參照。要求目前的應用程式金鑰時,系統會更新這個欄位,以反映新的類型 (輪替應用程式金鑰) 和實際用於產生應用程式金鑰的訓練週期金鑰 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 傳回的其他平台特定錯誤。

主要群組金鑰

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

取得目前的應用程式金鑰 ID

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 傳回的其他平台特定錯誤。

取得目前的世界標準時間時間

virtual WEAVE_ERROR GetCurrentUTCTime(
  uint32_t & utcTime
)

取得目前的平台 UTC 時間 (以秒為單位)。

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

取得群組金鑰

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 傳回的其他平台特定錯誤。

擷取群組金鑰

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

商店群組金鑰

virtual WEAVE_ERROR StoreGroupKey(
  const WeaveGroupKey & key
)=0

受保護的函式

Init

void Init(
  void
)

初始化本機群組金鑰儲存參數。

OnEpochKeysChange

void OnEpochKeysChange(
  void
)

傳回目前的金鑰 ID。

當應用程式 epoch 金鑰集發生任何變更 (刪除或儲存) 時,將與 Epoch 金鑰相關聯的成員變數設為預設值。負責實作 StoreGroupKey()、DeleteGroupKey() 和 DeleteGroupKeysOfAType() 函式來呼叫這個方法。

擷取 LastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUseEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0