nl::Weave::WeaveKeyId

#include <src/lib/core/WeaveKeyIds.h>

Weave 密钥标识符的定义。

摘要

此类包含键类型、键标志、键 ID 字段定义和 API 函数。

公共类型

@52{
  kType_None = 0x00000000,
  kType_General = 0x00001000,
  kType_Session = 0x00002000,
  kType_AppStaticKey = 0x00004000,
  kType_AppRotatingKey = kType_AppStaticKey | kTypeModifier_IncorporatesEpochKey,
  kType_AppRootKey = 0x00010000,
  kType_AppEpochKey = 0x00020000 | kTypeModifier_IncorporatesEpochKey,
  kType_AppGroupMasterKey = 0x00030000,
  kType_AppIntermediateKey = kType_AppRootKey | kTypeModifier_IncorporatesEpochKey,
  kNone = kType_None | 0x0000,
  kFabricSecret = kType_General | 0x0001,
  kFabricRootKey = kType_AppRootKey | (0 << kShift_RootKeyNumber),
  kClientRootKey = kType_AppRootKey | (1 << kShift_RootKeyNumber),
  kServiceRootKey = kType_AppRootKey | (2 << kShift_RootKeyNumber),
  kKeyNumber_Max = kMask_KeyNumber
}
枚举
公开 Weave 密钥 ID 字段、标记和类型。

公共静态函数

ConvertToCurrentAppKeyId(uint32_t keyId)
uint32_t
将应用组密钥 ID 转换为应用当前的密钥 ID。
ConvertToStaticAppKeyId(uint32_t keyId)
uint32_t
将应用密钥 ID 转换为应用静态密钥 ID。
DescribeKey(uint32_t keyId)
const char *
使用描述性字符串解码 Weave 密钥标识符。
GetAppGroupLocalNumber(uint32_t keyId)
uint8_t
获取用于推导指定应用密钥的应用组本地编号。
GetAppGroupMasterKeyId(uint32_t keyId)
uint32_t
获取用于推导指定应用密钥的应用组主密钥 ID。
GetEpochKeyId(uint32_t keyId)
uint32_t
获取用于推导指定应用密钥的应用组 Epoch 密钥 ID。
GetEpochKeyNumber(uint32_t keyId)
uint8_t
获取用于派生指定的应用密钥的应用组周期号。
GetRootKeyId(uint32_t keyId)
uint32_t
获取用于派生指定的应用密钥的应用组根密钥 ID。
GetRootKeyNumber(uint32_t keyId)
uint8_t
获取用于派生指定的应用密钥的应用组根密钥编号。
GetType(uint32_t keyId)
uint32_t
获取指定密钥 ID 的 Weave 密钥类型。
IncorporatesAppGroupMasterKey(uint32_t keyId)
bool
确定指定的应用组密钥 ID 是否包含组主密钥。
IncorporatesEpochKey(uint32_t keyId)
bool
确定指定的应用组密钥 ID 是否包含 Epoch 键。
IncorporatesRootKey(uint32_t keyId)
bool
确定指定的应用组密钥 ID 是否包含根密钥。
IsAppEpochKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否属于应用 Epoch 密钥类型。
IsAppGroupKey(uint32_t keyId)
bool
确定指定的密钥 ID 属于应用群组密钥类型(静态或轮替)。
IsAppGroupMasterKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否为应用群组主密钥类型。
IsAppRootKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否为应用根密钥类型。
IsAppRotatingKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否为应用轮播类型。
IsAppStaticKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否为应用静态类型。
IsGeneralKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否为通用类型。
IsMessageEncryptionKeyId(uint32_t keyId, bool allowLogicalKeys)
bool
确定给定密钥 ID 是否标识了适用于 Weave 消息加密的密钥。
IsSameKeyOrGroup(uint32_t keyId1, uint32_t keyId2)
bool
确定两个密钥 ID 是标识同一密钥,还是在轮替密钥时,同一组密钥不依赖于任何特定周期。
IsSessionKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否为会话类型。
IsValidKeyId(uint32_t keyId)
bool
确定密钥标识符是否具有有效的(法律)值。
MakeAppGroupMasterKeyId(uint8_t appGroupLocalNumber)
uint32_t
根据应用组本地编号构建应用组主密钥 ID。
MakeAppIntermediateKeyId(uint32_t rootKeyId, uint32_t epochKeyId, bool useCurrentEpochKey)
uint32_t
根据组成密钥 ID 构建应用中间密钥 ID。
MakeAppKeyId(uint32_t keyType, uint32_t rootKeyId, uint32_t epochKeyId, uint32_t appGroupMasterKeyId, bool useCurrentEpochKey)
uint32_t
根据组密钥 ID 和其他信息构建应用组密钥 ID。
MakeAppRotatingKeyId(uint32_t rootKeyId, uint32_t epochKeyId, uint32_t appGroupMasterKeyId, bool useCurrentEpochKey)
uint32_t
根据组合密钥 ID 和其他信息构建应用轮替密钥 ID。
MakeAppStaticKeyId(uint32_t rootKeyId, uint32_t appGroupMasterKeyId)
uint32_t
在给定键 ID 的情况下构建应用静态键 ID。
MakeEpochKeyId(uint8_t epochKeyNumber)
uint32_t
根据新纪元键号构建应用组根键 ID。
MakeGeneralKeyId(uint16_t generalKeyNumber)
uint16_t
根据一般按键编号构建通用按键 ID。
MakeRootKeyId(uint8_t rootKeyNumber)
uint32_t
根据根密钥编号构造应用组根密钥 ID。
MakeSessionKeyId(uint16_t sessionKeyNumber)
uint16_t
根据会话密钥编号构建会话密钥 ID。
UpdateEpochKeyId(uint32_t keyId, uint32_t epochKeyId)
uint32_t
使用新的周期密钥编号更新应用组密钥 ID。
UsesCurrentEpochKey(uint32_t keyId)
bool
确定指定的应用组密钥 ID 是否使用“当前”周期纪元密钥。

公共类型

@52

 @52

公开 Weave 密钥 ID 字段、标记和类型。

属性
kClientRootKey

客户端根密钥 ID。

kFabricRootKey

Fabric 根密钥 ID。

kFabricSecret

编织面料 ID。

kKeyNumber_Max

键 ID 子字段的最大值。

kNone

编织全局键 ID。

未指定的 Weave 密钥 ID。

kServiceRootKey

服务根密钥 ID。

kType_AppEpochKey

应用组纪元密钥类型。

kType_AppGroupMasterKey

应用组主密钥类型。

kType_AppIntermediateKey

应用组中间密钥类型。

kType_AppRootKey

Weave 密钥类型(Weave 消息加密类型除外)。

kType_AppRotatingKey

应用轮替密钥类型。

kType_AppStaticKey

应用静态密钥类型。

kType_General

常规密钥类型。

kType_None

用于 Weave 消息加密的 Weave 密钥类型。

kType_Session

会话密钥类型。

公共静态函数

ConvertToCurrentAppKeyId

uint32_t ConvertToCurrentAppKeyId(
  uint32_t keyId
)

将应用组密钥 ID 转换为应用当前的密钥 ID。

详细信息
参数
[in] keyId
应用密钥 ID。
返回值
应用当前密钥 ID。

ConvertToStaticAppKeyId

uint32_t ConvertToStaticAppKeyId(
  uint32_t keyId
)

将应用密钥 ID 转换为应用静态密钥 ID。

详细信息
参数
[in] keyId
应用密钥 ID。
返回值
应用静态密钥 ID。

描述键

const char * DescribeKey(
  uint32_t keyId
)

使用描述性字符串解码 Weave 密钥标识符。

详细信息
参数
[in] keyId
编织要解码的键 ID 以及要返回描述性字符串的键 ID。
返回值
指向以 NULL 结尾的字符串,该字符串描述了指定的键 ID。

GetAppGroupLocalNumber

uint8_t GetAppGroupLocalNumber(
  uint32_t keyId
)

获取用于推导指定应用密钥的应用组本地编号。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
应用组本地电话号码。

GetAppGroupMasterKeyId

uint32_t GetAppGroupMasterKeyId(
  uint32_t keyId
)

获取用于推导指定应用密钥的应用组主密钥 ID。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
应用组主密钥 ID。

GetEpochKeyId

uint32_t GetEpochKeyId(
  uint32_t keyId
)

获取用于推导指定应用密钥的应用组 Epoch 密钥 ID。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
Epoch 键 ID。

GetEpochKeyNumber

uint8_t GetEpochKeyNumber(
  uint32_t keyId
)

获取用于派生指定的应用密钥的应用组周期号。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
新纪元键编号。

GetRootKeyId

uint32_t GetRootKeyId(
  uint32_t keyId
)

获取用于派生指定的应用密钥的应用组根密钥 ID。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
根密钥 ID。

GetRootKeyNumber

uint8_t GetRootKeyNumber(
  uint32_t keyId
)

获取用于派生指定的应用密钥的应用组根密钥编号。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
根密钥编号。

GetType

uint32_t GetType(
  uint32_t keyId
)

获取指定密钥 ID 的 Weave 密钥类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
密钥 ID 的类型。

整合了 AppGroupMasterKey

bool IncorporatesAppGroupMasterKey(
  uint32_t keyId
)

确定指定的应用组密钥 ID 是否包含组主密钥。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 包含组主密钥,则返回 true。

公司 EpochKey

bool IncorporatesEpochKey(
  uint32_t keyId
)

确定指定的应用组密钥 ID 是否包含 Epoch 键。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 包含新纪元键,则返回 true。

公司根密钥

bool IncorporatesRootKey(
  uint32_t keyId
)

确定指定的应用组密钥 ID 是否包含根密钥。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 包含根键,则为 true。

应用密钥

bool IsAppEpochKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否属于应用 Epoch 密钥类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果应用周期键类型的键 ID,则为 true。

应用组密钥

bool IsAppGroupKey(
  uint32_t keyId
)

确定指定的密钥 ID 属于应用群组密钥类型(静态或轮替)。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果 keyId 是轮替类型或静态键类型,则为 true。

IsAppGroupMasterKey

bool IsAppGroupMasterKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为应用群组主密钥类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果应用组主键类型的 keyId,则为 true。

IsAppRootKey

bool IsAppRootKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为应用根密钥类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果应用根密钥类型的 keyId,则为 true。

IsAppRotatingKey

bool IsAppRotatingKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为应用轮播类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果应用旋转类型的 keyId 为 true,

IsAppStaticKey

bool IsAppStaticKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为应用静态类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果应用静态类型的键 ID,则返回 true。

常规键

bool IsGeneralKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为通用类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果 keyId 具有常规类型,则为 true。

IsMessageEncryptionKeyId

bool IsMessageEncryptionKeyId(
  uint32_t keyId,
  bool allowLogicalKeys
)

确定给定密钥 ID 是否标识了适用于 Weave 消息加密的密钥。

详细信息
参数
[in] keyId
Weave 密钥 ID。
[in] allowLogicalKeys
指定是否应将逻辑密钥 ID(例如“当前”轮替的密钥)视为适用于消息加密。
返回值
如果标识的密钥可用于加密 Weave 消息,则为 true。

IsSameKeyOrGroup

bool IsSameKeyOrGroup(
  uint32_t keyId1,
  uint32_t keyId2
)

确定两个密钥 ID 是标识同一密钥,还是在轮替密钥时,同一组密钥不依赖于任何特定周期。

详细信息
参数
[in] keyId1
要测试的第一个密钥 ID。
[in] keyId2
要测试的第二个密钥 ID。
返回值
如果键 ID 表示相同的键,则返回 true。

IsSessionKey

bool IsSessionKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为会话类型。

详细信息
参数
[in] keyId
编织密钥标识符。
返回值
如果会话类型的键 ID,则返回 true。

IsValidKeyId

bool IsValidKeyId(
  uint32_t keyId
)

确定密钥标识符是否具有有效的(法律)值。

详细信息
参数
[in] keyId
Weave 密钥 ID。
返回值
如果键 ID 值有效,则返回 true。

MakeAppGroupMasterKeyId

uint32_t MakeAppGroupMasterKeyId(
  uint8_t appGroupLocalNumber
)

根据应用组本地编号构建应用组主密钥 ID。

详细信息
参数
[in] appGroupLocalNumber
应用组本地电话号码。
返回值
应用组主密钥 ID。

MakeAppIntermediateKeyId

uint32_t MakeAppIntermediateKeyId(
  uint32_t rootKeyId,
  uint32_t epochKeyId,
  bool useCurrentEpochKey
)

根据组成密钥 ID 构建应用中间密钥 ID。

详细信息
参数
[in] rootKeyId
用于推导应用中间密钥的根密钥 ID。
[in] epochKeyId
用于派生应用中间密钥的 Epoch 密钥 ID。
[in] useCurrentEpochKey
一个布尔值标记,用于指示是否应该使用“当前”周期键来派生密钥。
返回值
应用中间密钥 ID。

MakeAppKeyId

uint32_t MakeAppKeyId(
  uint32_t keyType,
  uint32_t rootKeyId,
  uint32_t epochKeyId,
  uint32_t appGroupMasterKeyId,
  bool useCurrentEpochKey
)

根据组密钥 ID 和其他信息构建应用组密钥 ID。

详细信息
参数
[in] keyType
派生的应用组密钥类型。
[in] rootKeyId
用于推导应用组密钥的根密钥 ID。
[in] epochKeyId
用于派生应用组密钥的 Epoch 密钥 ID。
[in] appGroupMasterKeyId
用于派生应用组密钥的应用组主密钥 ID。
[in] useCurrentEpochKey
一个布尔值标记,用于指示是否应该使用“当前”周期键来派生密钥。
返回值
应用组密钥 ID。

MakeAppRotatingKeyId

uint32_t MakeAppRotatingKeyId(
  uint32_t rootKeyId,
  uint32_t epochKeyId,
  uint32_t appGroupMasterKeyId,
  bool useCurrentEpochKey
)

根据组合密钥 ID 和其他信息构建应用轮替密钥 ID。

详细信息
参数
[in] rootKeyId
用于派生应用轮替密钥的根密钥 ID。
[in] epochKeyId
用于派生应用轮替密钥的 Epoch 密钥 ID。
[in] appGroupMasterKeyId
用于派生应用轮替密钥的应用组主密钥 ID。
[in] useCurrentEpochKey
一个布尔值标记,用于指示是否应该使用“当前”周期键来派生密钥。
返回值
应用轮替密钥 ID。

MakeAppStaticKeyId

uint32_t MakeAppStaticKeyId(
  uint32_t rootKeyId,
  uint32_t appGroupMasterKeyId
)

在给定键 ID 的情况下构建应用静态键 ID。

详细信息
参数
[in] rootKeyId
用于派生应用静态密钥的根密钥 ID。
[in] appGroupMasterKeyId
用于派生应用静态密钥的应用组主密钥 ID。
返回值
应用静态密钥 ID。

MakeEpoch 密钥 ID

uint32_t MakeEpochKeyId(
  uint8_t epochKeyNumber
)

根据新纪元键号构建应用组根键 ID。

详细信息
参数
[in] epochKeyNumber
新纪元键编号。
返回值
Epoch 键 ID。

MakeGeneralKeyId

uint16_t MakeGeneralKeyId(
  uint16_t generalKeyNumber
)

根据一般按键编号构建通用按键 ID。

详细信息
参数
[in] generalKeyNumber
一般按键编号。
返回值
通用键 ID。

MakeRootKeyId

uint32_t MakeRootKeyId(
  uint8_t rootKeyNumber
)

根据根密钥编号构造应用组根密钥 ID。

详细信息
参数
[in] rootKeyNumber
根键编号。
返回值
根密钥 ID。

MakeSessionKeyId

uint16_t MakeSessionKeyId(
  uint16_t sessionKeyNumber
)

根据会话密钥编号构建会话密钥 ID。

详细信息
参数
[in] sessionKeyNumber
会话密钥编号。
返回值
会话密钥 ID。

更新 EpochKeyId

uint32_t UpdateEpochKeyId(
  uint32_t keyId,
  uint32_t epochKeyId
)

使用新的周期密钥编号更新应用组密钥 ID。

详细信息
参数
[in] keyId
应用密钥 ID。
[in] epochKeyId
Epoch 密钥 ID,用于构建更新后的应用密钥 ID。
返回值
应用密钥 ID。

使用当前 EpochKey

bool UsesCurrentEpochKey(
  uint32_t keyId
)

确定指定的应用组密钥 ID 是否使用“当前”周期纪元密钥。

详细信息
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 指示使用当前周期键,则为 true。