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
获取用于派生指定应用密钥的应用组周期密钥 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 是否包含周期密钥。
IncorporatesRootKey(uint32_t keyId)
bool
确定指定的应用组密钥 ID 是否包含根密钥。
IsAppEpochKey(uint32_t keyId)
bool
确定指定的密钥 ID 是否属于应用周期密钥类型。
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

织物的 Secret ID。

kKeyNumber_Max

键 ID 子字段的值上限。

kNone

Weave 全局密钥 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。

DescribeKey

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
)

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

具体说明
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
周期密钥 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
Weave 密钥标识符。
返回值
密钥 ID 的类型。

IncorporatesAppGroupMasterKey

bool IncorporatesAppGroupMasterKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 包含组主密钥,则为 true。

IncorporatesEpochKey

bool IncorporatesEpochKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 包含 epoch 键,则为 true。

IncorporatesRootKey

bool IncorporatesRootKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 包含根键,则为 true。

IsAppEpochKey

bool IsAppEpochKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果应用周期密钥类型的 keyId,则为 true。

IsAppGroupKey

bool IsAppGroupKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果 keyId 是轮替密钥或静态密钥类型,则为 true。

IsAppGroupMasterKey

bool IsAppGroupMasterKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果应用组主密钥类型的 keyId,则为 true。

IsAppRootKey

bool IsAppRootKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果应用根密钥类型的 keyId,则为 true。

IsAppRotatingKey

bool IsAppRotatingKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果应用轮替类型的 keyId,则为 true。

IsAppStaticKey

bool IsAppStaticKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果是应用静态类型的 keyId,则为 true。

IsGeneralKey

bool IsGeneralKey(
  uint32_t keyId
)

确定指定的密钥 ID 是否为常规类型。

具体说明
参数
[in] keyId
Weave 密钥标识符。
返回值
如果 keyId 为“General”类型,则为 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
Weave 密钥标识符。
返回值
如果会话类型的 keyId,则为 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
用于派生应用中间密钥的周期密钥 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
用于派生应用组密钥的周期密钥 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
用于派生应用轮替密钥的周期密钥 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。

MakeEpochKeyId

uint32_t MakeEpochKeyId(
  uint8_t epochKeyNumber
)

根据给定周期密钥编号构造应用组根密钥 ID。

具体说明
参数
[in] epochKeyNumber
新纪元密钥编号。
返回值
周期密钥 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。

UpdateEpochKeyId

uint32_t UpdateEpochKeyId(
  uint32_t keyId,
  uint32_t epochKeyId
)

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

具体说明
参数
[in] keyId
应用密钥 ID。
[in] epochKeyId
纪元密钥 ID,将用于构建更新后的应用密钥 ID。
返回值
应用密钥 ID。

UsesCurrentEpochKey

bool UsesCurrentEpochKey(
  uint32_t keyId
)

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

具体说明
参数
[in] keyId
Weave 应用组密钥标识符。
返回值
如果 keyId 指示当前周期密钥的使用情况,则为 true。