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::SecurityGroupKeyStoreImpl::
::SecurityGroupKeyStoreImpl:
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
获取当前平台世界协调时间 (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

受保护的属性

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
如果平台密钥库返回的键参数无效或键标识符包含无效值。
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。

根据当前系统时间和每个周期密钥的开始时间参数查找当前周期密钥。如果系统没有有效且准确的时间,则返回上次使用的周期密钥 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
)

获取当前平台世界协调时间 (UTC)(以秒为单位)。

具体说明
参数
[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。

当该组应用周期键发生任何更改(删除或存储)时,将与周期键关联的成员变量设置为默认值。实现 StoreGroupKey()、DeleteGroupKey() 和 DeleteGroupKeysOfAType() 函数的子类会负责调用此方法。

RetrieveLastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUsedEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0