nl::Weave::WeaveKeyId

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

Weave 金鑰 ID 的定義。

摘要

此類別包含金鑰類型、金鑰標記、金鑰 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 金鑰 ID。
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 是否包含 Epoch 紀元金鑰。
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
判斷金鑰 ID 是否具有有效的 (法律) 值。
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
根據指定的 Epoch 紀元金鑰號碼,建構應用程式群組根金鑰 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
使用新的 Epoch 紀元金鑰號碼更新應用程式群組金鑰 ID。
UsesCurrentEpochKey(uint32_t keyId)
bool
判斷指定的應用程式群組金鑰 ID 是否使用「當前」週期金鑰。

公開類型

@52

 @52

公用 Weave 金鑰 ID 欄位、旗標和類型。

屬性
kClientRootKey

用戶端根金鑰 ID。

kFabricRootKey

Fabric 根金鑰 ID。

kFabricSecret

Weave 織物密鑰 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

DescribeKey

const char * DescribeKey(
  uint32_t keyId
)

以描述性字串解碼 Weave 金鑰 ID。

詳細說明
參數
[in] keyId
整理要解碼及傳回描述性字串的鍵 ID。
傳回
指向描述指定金鑰 ID 的 NULL 結束字串的指標。

GetAppGroupLocalNumber

uint8_t GetAppGroupLocalNumber(
  uint32_t keyId
)

取得用於衍生指定應用程式金鑰的應用程式群組本機編號。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
應用程式群組本機號碼

GetAppGroupMasterKeyId

uint32_t GetAppGroupMasterKeyId(
  uint32_t keyId
)

取得用於衍生指定應用程式金鑰的應用程式群組主金鑰 ID。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
應用程式群組主金鑰 ID。

GetEpochKeyId

uint32_t GetEpochKeyId(
  uint32_t keyId
)

取得用於取得指定應用程式金鑰的應用程式群組週期金鑰 ID。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
Epoch 紀元金鑰 ID。

GetEpochKeyNumber

uint8_t GetEpochKeyNumber(
  uint32_t keyId
)

取得用於取得指定應用程式金鑰的應用程式群組週期金鑰。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
Epoch 紀元金鑰號碼。

GetRootKeyId

uint32_t GetRootKeyId(
  uint32_t keyId
)

取得用於衍生指定應用程式金鑰的應用程式群組根金鑰 ID。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
根金鑰 ID。

GetRootKeyNumber

uint8_t GetRootKeyNumber(
  uint32_t keyId
)

取得用於衍生指定應用程式金鑰的應用程式群組根金鑰號碼。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
根金鑰號碼。

GetType

uint32_t GetType(
  uint32_t keyId
)

取得指定金鑰 ID 的 Weave 金鑰類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
金鑰 ID 的類型

IncorporatesAppGroupMasterKey

bool IncorporatesAppGroupMasterKey(
  uint32_t keyId
)

判斷指定的應用程式群組金鑰 ID 是否包含群組主金鑰。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
如果 keyId 包含群組主鍵,則為 true。

IncorporatesEpochKey

bool IncorporatesEpochKey(
  uint32_t keyId
)

判斷指定的應用程式群組金鑰 ID 是否包含 Epoch 紀元金鑰。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
如果 keyId 包含 Epoch 紀元鍵,則傳回 true。

IncorporatesRootKey

bool IncorporatesRootKey(
  uint32_t keyId
)

判斷指定的應用程式群組金鑰 ID 是否包含根金鑰。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
如果 keyId 包含根鍵,則為 true。

IsAppEpochKey

bool IsAppEpochKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否為應用程式週期金鑰類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果應用程式週期金鑰類型的 keyId 為 true,則傳回 true。

IsAppGroupKey

bool IsAppGroupKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否屬於其中一個應用程式群組金鑰類型 (靜態或輪替)。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果 keyId 為輪替或靜態金鑰類型,則為 true。

IsAppGroupMasterKey

bool IsAppGroupMasterKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否為應用程式群組主金鑰類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果應用程式群組主金鑰類型的 keyId,則為 true。

IsAppRootKey

bool IsAppRootKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否為應用程式根金鑰類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果應用程式根金鑰類型的 keyId,傳回 true。

IsAppRotatingKey

bool IsAppRotatingKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否為應用程式輪替類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果應用程式旋轉類型的 keyId 為 true,則傳回 true。

IsAppStaticKey

bool IsAppStaticKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否為應用程式靜態類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果應用程式靜態類型的 keyId,傳回 true。

IsGeneralKey

bool IsGeneralKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否為一般類型。

詳細說明
參數
[in] keyId
Weave 金鑰 ID。
傳回
如果 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 金鑰 ID。
傳回
如果工作階段類型的 keyId,則為 true。

IsValidKeyId

bool IsValidKeyId(
  uint32_t keyId
)

判斷金鑰 ID 是否具有有效的 (法律) 值。

詳細說明
參數
[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

MakeEpochKeyId

uint32_t MakeEpochKeyId(
  uint8_t epochKeyNumber
)

根據指定的 Epoch 紀元金鑰號碼,建構應用程式群組根金鑰 ID。

詳細說明
參數
[in] epochKeyNumber
Epoch 紀元金鑰號碼。
傳回
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。

UpdateEpochKeyId

uint32_t UpdateEpochKeyId(
  uint32_t keyId,
  uint32_t epochKeyId
)

使用新的 Epoch 紀元金鑰號碼更新應用程式群組金鑰 ID。

詳細說明
參數
[in] keyId
應用程式金鑰 ID。
[in] epochKeyId
Epoch 紀元金鑰 ID,用於建構更新後的應用程式金鑰 ID。
傳回
應用程式金鑰 ID。

UsesCurrentEpochKey

bool UsesCurrentEpochKey(
  uint32_t keyId
)

判斷指定的應用程式群組金鑰 ID 是否使用「當前」週期金鑰。

詳細說明
參數
[in] keyId
Weave 應用程式群組金鑰 ID。
傳回
如果 keyId 指出使用的是目前的 Epoch 紀元金鑰,則為 true。