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

获取应用组密钥。

此函数用于派生或检索应用组密钥。此函数支持的密钥类型包括:Fabric 密钥、根密钥、纪元密钥、群组主密钥和中间密钥。

详细信息
参数
[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