nl::Weave::WeaveKeyId

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

Weave Key 識別碼的定義。

總結

這個類別包含了金鑰類型、金鑰標記、金鑰 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
}
列舉
公開的金鑰 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
取得用於擷取指定應用程式金鑰的應用程式群組 Epoch 金鑰 ID。
GetEpochKeyNumber(uint32_t keyId)
uint8_t
取得用於擷取指定應用程式金鑰的應用程式群組 Epoch 金鑰編號。
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 是否識別適用於 Weveve 訊息加密的金鑰。
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
建構應用程式群組的根金鑰 ID (將包含 Epoch 金鑰金鑰)。
MakeGeneralKeyId(uint16_t generalKeyNumber)
uint16_t
在建構一般金鑰 ID 時建構一般金鑰 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 是否使用「目前」金鑰;Epoch 金鑰。

公開類型

@52

 @52

公開的金鑰 ID 欄位、標記和類型。

屬性
kClientRootKey

用戶端根金鑰 ID。

kFabricRootKey

布料根金鑰 ID。

kFabricSecret

編織布料秘密 ID。

kKeyNumber_Max

鍵 ID 子欄位的最大值。

kNone

編組全域金鑰 ID。

未指定的 Weveve 金鑰 ID。

kServiceRootKey

服務根金鑰 ID。

kType_AppEpochKey

應用程式群組的 Epoch 金鑰類型。

kType_AppGroupMasterKey

應用程式群組主金鑰類型。

kType_AppIntermediateKey

應用程式群組的中繼金鑰類型。

kType_AppRootKey

Weave 金鑰類型 (Weave 訊息加密類型除外)。

kType_AppRotatingKey

應用程式輪替金鑰類型。

kType_AppStaticKey

應用程式靜態金鑰類型。

kType_General

一般金鑰類型。

kType_None

用於將 Weave 訊息加密的金鑰類型。

kType_Session

工作階段金鑰類型。

公開的靜態函式

轉換至目前應用程式金鑰 ID

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 金鑰 ID。

詳細資料
參數
[in] keyId
用來解碼及傳回描述性字串的金鑰 ID。
傳回
指向 NULL 結尾字串的說明,指出指定金鑰 ID。

取得應用程式群組本機編號

uint8_t GetAppGroupLocalNumber(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
應用程式群組的本機編號。

取得應用程式群組主鍵 ID

uint32_t GetAppGroupMasterKeyId(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
應用程式群組主金鑰 ID。

GetEpochKeyId

uint32_t GetEpochKeyId(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
Epoch 金鑰 ID。

GetEpoch 金鑰號碼

uint8_t GetEpochKeyNumber(
  uint32_t keyId
)

取得用於擷取指定應用程式金鑰的應用程式群組 Epoch 金鑰編號。

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
Epoch 金鑰編號。

取得根金鑰 ID

uint32_t GetRootKeyId(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
根金鑰 ID。

取得根金鑰編號

uint8_t GetRootKeyNumber(
  uint32_t keyId
)

取得用於擷取指定應用程式金鑰的應用程式群組根金鑰編號。

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
根金鑰編號。

GetType

uint32_t GetType(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
金鑰 ID 的類型。

IncorporatesAppGroupMasterKey

bool IncorporatesAppGroupMasterKey(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
如果 keyId 包含群組主鍵,則值為 true。

IncorporatesEpochKey

bool IncorporatesEpochKey(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
如果 keyId 包含 Epoch 金鑰,則傳回 true。

IncorporatesRootKey

bool IncorporatesRootKey(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
如果 keyId 包含根鍵,則傳回 true。

是 AppEpochKey

bool IsAppEpochKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否屬於應用程式訓練週期金鑰類型。

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果應用程式的 Epoch 金鑰金鑰的 keyId 為 true,則為 true。

是應用程式群組金鑰

bool IsAppGroupKey(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果 keyId 為輪播類型或靜態金鑰類型,則傳回 true。

是應用程式主金鑰

bool IsAppGroupMasterKey(
  uint32_t keyId
)

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

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

是應用程式根金鑰

bool IsAppRootKey(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果應用程式根金鑰類型的 keyId,則為 true。

是 AppRotatingKey

bool IsAppRotatingKey(
  uint32_t keyId
)

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

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

是 AppStaticKey

bool IsAppStaticKey(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果應用程式靜態類型的 keyId,則為 true。

通用金鑰

bool IsGeneralKey(
  uint32_t keyId
)

判斷指定金鑰 ID 是否屬於一般類型。

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果 keyId 具有一般類型,則傳回 true。

訊息加密金鑰 ID

bool IsMessageEncryptionKeyId(
  uint32_t keyId,
  bool allowLogicalKeys
)

判斷指定金鑰 ID 是否識別適用於 Weveve 訊息加密的金鑰。

詳細資料
參數
[in] keyId
編組金鑰 ID。
[in] allowLogicalKeys
指定是否應將邏輯金鑰 ID (例如「目前」金鑰) 視為適用於郵件加密。
傳回
true。如果系統可以根據指定的金鑰加密 Weave 訊息,

相同金鑰或群組

bool IsSameKeyOrGroup(
  uint32_t keyId1,
  uint32_t keyId2
)

決定兩個金鑰 ID 是否可識別同一組金鑰,或者在輪替金鑰時,這組金鑰組 (與任何特定訓練週期無關) 無關。

詳細資料
參數
[in] keyId1
第一個要測試的金鑰 ID。
[in] keyId2
要測試的第二個金鑰 ID。
傳回
如果金鑰 ID 代表相同鍵,則傳回 true。

是工作階段金鑰

bool IsSessionKey(
  uint32_t keyId
)

判斷指定的金鑰 ID 是否屬於工作階段類型。

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果工作階段類型的 keyId,則為 true。

是有效的

bool IsValidKeyId(
  uint32_t keyId
)

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

詳細資料
參數
[in] keyId
編組金鑰 ID。
傳回
如果金鑰 ID 值有效,則傳回 true。

建立應用程式群組主要金鑰 ID

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
布林值標記,表示是否要使用「目前」金鑰 (例如 Epoch 金鑰) 產生金鑰。
傳回
應用程式中繼金鑰 ID。

建立應用程式金鑰 ID

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
布林值標記,表示是否要使用「目前」金鑰 (例如 Epoch 金鑰) 產生金鑰。
傳回
應用程式群組金鑰 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
布林值標記,表示是否要使用「目前」金鑰 (例如 Epoch 金鑰) 產生金鑰。
傳回
應用程式輪替金鑰 ID。

MakeAppStaticKeyId

uint32_t MakeAppStaticKeyId(
  uint32_t rootKeyId,
  uint32_t appGroupMasterKeyId
)

根據構成的金鑰 ID 建構應用程式靜態金鑰 ID。

詳細資料
參數
[in] rootKeyId
用來取得應用程式靜態金鑰的根金鑰 ID。
[in] appGroupMasterKeyId
用來產生應用程式靜態金鑰的應用程式群組主金鑰 ID。
傳回
應用程式靜態金鑰 ID。

建立金鑰

uint32_t MakeEpochKeyId(
  uint8_t epochKeyNumber
)

建構應用程式群組的根金鑰 ID (將包含 Epoch 金鑰金鑰)。

詳細資料
參數
[in] epochKeyNumber
Epoch 金鑰編號。
傳回
Epoch 金鑰 ID。

一般金鑰 ID

uint16_t MakeGeneralKeyId(
  uint16_t generalKeyNumber
)

在建構一般金鑰 ID 時建構一般金鑰 ID。

詳細資料
參數
[in] generalKeyNumber
一般金鑰編號。
傳回
一般金鑰 ID。

建立根金鑰 ID

uint32_t MakeRootKeyId(
  uint8_t rootKeyNumber
)

建構應用程式群組根金鑰 ID (指定根金鑰編號)。

詳細資料
參數
[in] rootKeyNumber
根金鑰編號。
傳回
根金鑰 ID。

建立工作階段金鑰 ID

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。

使用 CurrentEpochKey

bool UsesCurrentEpochKey(
  uint32_t keyId
)

判斷指定的應用程式群組金鑰 ID 是否使用「目前」金鑰;Epoch 金鑰。

詳細資料
參數
[in] keyId
編織應用程式群組金鑰識別碼。
傳回
如果 keyId 表示使用目前 popoch 金鑰,則值為 true。