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
)

衍生應用程式金鑰。

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

詳細資料
參數
[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 傳回的其他平台專屬錯誤。

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
如果平台金鑰儲存庫中找不到 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。

當應用程式紀元鍵組發生任何變更 (刪除或儲存) 時,會將與紀元鍵相關聯的會員變數設為預設值。實作 StoreGroupKey()、DeleteGroupKey() 和 DeleteGroupKeysOfAType() 函式的子類別,負責呼叫這個方法。

RetrieveLastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUsedEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0