nl::Weave::WeaveSecurityManager

摘要

建構函式和解構函式

WeaveSecurityManager(void)

公開類型

KeyErrorMsgRcvdFunct)(uint16_t keyId, uint8_t encType, uint32_t messageId, uint64_t peerNodeId, WEAVE_ERROR keyErr) typedef
void(*
主要錯誤訊息處理函式的類型。
KeyExportCompleteFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, uint32_t exportedKeyId, const uint8_t *exportedKey, uint16_t exportedKeyLen) typedef
void(*
金鑰匯出通訊協定完整處理函式的類型。
KeyExportErrorFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, WEAVE_ERROR localErr, StatusReport *statusReport) typedef
void(*
金鑰匯出通訊協定錯誤處理函式的類型。
SessionErrorFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, WEAVE_ERROR localErr, uint64_t peerNodeId, StatusReport *statusReport) typedef
void(*
SessionEstablishedFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, uint16_t sessionKeyId, uint64_t peerNodeId, uint8_t encType) typedef
void(*
State 列舉

公開屬性

CASEUseKnownECDHKey
bool
ExchangeManager
FabricState
IdleSessionTimeout
uint32_t
InitiatorAllowedCASEConfigs
uint8_t
InitiatorAllowedCASECurves
uint8_t
InitiatorAllowedKeyExportConfigs
uint8_t
InitiatorCASEConfig
uint32_t
InitiatorCASECurveId
uint32_t
InitiatorKeyExportConfig
uint8_t
OnKeyErrorMsgRcvd
主要錯誤回呼函式。
OnSessionError
SessionErrorFunct
OnSessionEstablished
SessionEstablishedFunct
ResponderAllowedCASEConfigs
uint8_t
ResponderAllowedCASECurves
uint8_t
ResponderAllowedKeyExportConfigs
uint8_t
SessionEstablishTimeout
uint32_t
State
uint8_t
mCASEEngine
mKeyExport
mPASEEngine
mStartKeyExport_OnComplete
金鑰匯出通訊協定完整回呼函式。
mStartKeyExport_OnError
金鑰匯出通訊協定錯誤回呼函式。
mStartKeyExport_ReqState
void *
mStartSecureSession_OnComplete
SessionEstablishedFunct
mStartSecureSession_OnError
SessionErrorFunct
mStartSecureSession_ReqState
void *
mTAKEEngine

公用函式

CancelSessionEstablishment(void *reqState)
取消進行中的工作階段建立作業。
Init(WeaveExchangeManager & aExchangeMgr, System::Layer & aSystemLayer)
IsKeyError(WEAVE_ERROR err)
bool
檢查指定的 Weave 錯誤代碼是否為主要錯誤代碼。
OnEncryptedMsgRcvd(uint16_t sessionKeyId, uint64_t peerNodeId, uint8_t encType)
void
ReleaseKey(uint64_t peerNodeId, uint16_t keyId)
void
釋出訊息加密金鑰預留項目。
ReserveKey(uint64_t peerNodeId, uint16_t keyId)
void
預訂訊息加密金鑰。
SendKeyErrorMsg(WeaveMessageInfo *rcvdMsgInfo, const IPPacketInfo *rcvdMsgPacketInfo, WeaveConnection *con, WEAVE_ERROR keyErr)
傳送金鑰錯誤訊息。
SetCASEAuthDelegate(WeaveCASEAuthDelegate *delegate)
void
SetKeyExportDelegate(WeaveKeyExportDelegate *delegate)
void
SetTAKEAuthDelegate(WeaveTAKEChallengerAuthDelegate *delegate)
void
SetTAKETokenAuthDelegate(WeaveTAKETokenAuthDelegate *delegate)
void
Shutdown(void)
StartCASESession(WeaveConnection *con, uint64_t peerNodeId, const IPAddress & peerAddr, uint16_t peerPort, WeaveAuthMode requestedAuthMode, void *reqState, SessionEstablishedFunct onComplete, SessionErrorFunct onError, WeaveCASEAuthDelegate *authDelegate, uint64_t terminatingNodeId)
系統會呼叫此方法來建立新的 CASE 工作階段,或找出現有的 CASE 工作階段。
StartKeyExport(WeaveConnection *con, uint64_t peerNodeId, const IPAddress & peerAddr, uint16_t peerPort, uint32_t keyId, bool signMessage, void *reqState, KeyExportCompleteFunct onComplete, KeyExportErrorFunct onError, WeaveKeyExportDelegate *keyExportDelegate)
StartPASESession(WeaveConnection *con, WeaveAuthMode requestedAuthMode, void *reqState, SessionEstablishedFunct onComplete, SessionErrorFunct onError, const uint8_t *pw, uint16_t pwLen)
系統會呼叫此方法來建立安全的 PASE 工作階段。
StartTAKESession(WeaveConnection *con, WeaveAuthMode requestedAuthMode, void *reqState, SessionEstablishedFunct onComplete, SessionErrorFunct onError, bool encryptAuthPhase, bool encryptCommPhase, bool timeLimitedIK, bool sendChallengerId, WeaveTAKEChallengerAuthDelegate *authDelegate)
系統會呼叫此方法來建立安全的 TAKE 工作階段。

公開類型

KeyErrorMsgRcvdFunct

void(* KeyErrorMsgRcvdFunct)(uint16_t keyId, uint8_t encType, uint32_t messageId, uint64_t peerNodeId, WEAVE_ERROR keyErr)

主要錯誤訊息處理函式的類型。

詳細說明
參數
[in] keyId
加密金鑰導致對等點收到金鑰錯誤訊息回應。
[in] encType
keyId 相關聯的加密類型。
[in] messageId
Weave 訊息的 ID 產生了對等點的主要錯誤回應。
[in] peerNodeId
傳送金鑰錯誤訊息的 Weave 節點 ID。
[in] keyErr
從對等點收到的錯誤代碼。

KeyExportCompleteFunct

void(* KeyExportCompleteFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, uint32_t exportedKeyId, const uint8_t *exportedKey, uint16_t exportedKeyLen)

金鑰匯出通訊協定完整處理函式的類型。

詳細說明
參數
[in] sm
WeaveSecurityManager 物件的指標。
[in] con
WeaveConnection 物件的指標。
[in] reqState
金鑰匯出要求者狀態的指標。
[in] keyId
匯出的金鑰 ID。
[in] exportedKey
指向匯出密鑰的指標。
[in] exportedKeyLen
匯出密鑰長度的參照。

KeyExportErrorFunct

void(* KeyExportErrorFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, WEAVE_ERROR localErr, StatusReport *statusReport)

金鑰匯出通訊協定錯誤處理函式的類型。

詳細說明
參數
[in] sm
WeaveSecurityManager 物件的指標。
[in] con
WeaveConnection 物件的指標。
[in] reqState
金鑰匯出要求者狀態的指標。
[in] localErr
金鑰匯出通訊協定期間發生的 WEAVE_ERROR。
[in] statusReport
如果從對等點收到錯誤狀態,這個指標會指向 StatusReport 物件。

SessionErrorFunct

void(* SessionErrorFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, WEAVE_ERROR localErr, uint64_t peerNodeId, StatusReport *statusReport)

SessionEstablishedFunct

void(* SessionEstablishedFunct)(WeaveSecurityManager *sm, WeaveConnection *con, void *reqState, uint16_t sessionKeyId, uint64_t peerNodeId, uint8_t encType)

狀態

 State

公開屬性

CASEUseKnownECDHKey

bool CASEUseKnownECDHKey

ExchangeManager

WeaveExchangeManager * ExchangeManager

FabricState

WeaveFabricState * FabricState

IdleSessionTimeout

uint32_t IdleSessionTimeout

InitiatorAllowedCASEConfigs

uint8_t InitiatorAllowedCASEConfigs

InitiatorAllowedCASECurves

uint8_t InitiatorAllowedCASECurves

InitiatorAllowedKeyExportConfigs

uint8_t InitiatorAllowedKeyExportConfigs

InitiatorCASEConfig

uint32_t InitiatorCASEConfig

InitiatorCASECurveId

uint32_t InitiatorCASECurveId

InitiatorKeyExportConfig

uint8_t InitiatorKeyExportConfig

OnKeyErrorMsgRcvd

KeyErrorMsgRcvdFunct OnKeyErrorMsgRcvd

主要錯誤回呼函式。

收到金鑰錯誤訊息時,系統會呼叫此函式。

OnSessionError

SessionErrorFunct OnSessionError

OnSessionEstablished

SessionEstablishedFunct OnSessionEstablished

ResponderAllowedCASEConfigs

uint8_t ResponderAllowedCASEConfigs

ResponderAllowedCASECurves

uint8_t ResponderAllowedCASECurves

ResponderAllowedKeyExportConfigs

uint8_t ResponderAllowedKeyExportConfigs

SessionEstablishTimeout

uint32_t SessionEstablishTimeout

狀態

uint8_t State

mCASEEngine

WeaveCASEEngine * mCASEEngine

mKeyExport

WeaveKeyExport * mKeyExport

mPASEEngine

WeavePASEEngine * mPASEEngine

mStartKeyExport_OnComplete

KeyExportCompleteFunct mStartKeyExport_OnComplete

金鑰匯出通訊協定完整回呼函式。

密鑰匯出程序完成後,系統會呼叫這個函式。

mStartKeyExport_OnError

KeyExportErrorFunct mStartKeyExport_OnError

金鑰匯出通訊協定錯誤回呼函式。

金鑰匯出程序期間發生錯誤時,系統會呼叫此函式。

mStartKeyExport_ReqState

void * mStartKeyExport_ReqState

mStartSecureSession_OnComplete

SessionEstablishedFunct mStartSecureSession_OnComplete

mStartSecureSession_OnError

SessionErrorFunct mStartSecureSession_OnError

mStartSecureSession_ReqState

void * mStartSecureSession_ReqState

mTAKEEngine

WeaveTAKEEngine * mTAKEEngine

公用函式

CancelSessionEstablishment

WEAVE_ERROR CancelSessionEstablishment(
  void *reqState
)

取消進行中的工作階段建立作業。

詳細說明
參數
[in] reqState
與應用程式啟動工作階段時提供的值相符的指標值。
傳回值
WEAVE_NO_ERROR
找到相符的進行中工作階段建立作業並遭到取消。
WEAVE_ERROR_INCORRECT_STATE
如果沒有任何進行中的工作階段建立作業,或是進行中的工作階段與提供的要求狀態指標不符,

Init

WEAVE_ERROR Init(
  WeaveExchangeManager & aExchangeMgr,
  System::Layer & aSystemLayer
)

IsKeyError

bool IsKeyError(
  WEAVE_ERROR err
)

檢查指定的 Weave 錯誤代碼是否為主要錯誤代碼。

如果解碼時找不到正確的金鑰,系統會呼叫這個函式,判斷是否應將金鑰錯誤訊息傳送給訊息啟動者。

詳細說明
參數
[in] err
Weave 錯誤代碼。
傳回值
true
如果指定 Weave 錯誤代碼,就會視為金鑰錯誤。
false
其他情況。

OnEncryptedMsgRcvd

void OnEncryptedMsgRcvd(
  uint16_t sessionKeyId,
  uint64_t peerNodeId,
  uint8_t encType
)

ReleaseKey

void ReleaseKey(
  uint64_t peerNodeId,
  uint16_t keyId
)

釋出訊息加密金鑰預留項目。

釋出先前儲存在訊息加密金鑰中的保留項目。

針對每個特定鍵上的保留項目,ReleaseKey() 方法最多只能呼叫一次。

這個方法接受任何形式的金鑰 ID,包括 None。系統會忽略沒有為實際鍵命名的金鑰 ID。

詳細說明
參數
[in] peerNodeId
共用金鑰的對等點 Weave 節點 ID。
[in] keyId
應釋出保留項目的金鑰 ID。

ReserveKey

void ReserveKey(
  uint64_t peerNodeId,
  uint16_t keyId
)

預訂訊息加密金鑰。

金鑰預留項目是用來表示正在使用特定金鑰,因此應保留。請注意,透過金鑰預訂並不保證系統不會透過明確的動作 (例如接收 KeyError 訊息) 移除金鑰。

每個在特定鍵上的保留項目,都必須呼叫 ReleaseKey()

這個方法接受任何形式的金鑰 ID,包括 None。系統會忽略沒有為實際鍵命名的金鑰 ID。

詳細說明
參數
[in] peerNodeId
共用金鑰的對等點 Weave 節點 ID。
[in] keyId
要保留的金鑰 ID。

SendKeyErrorMsg

WEAVE_ERROR SendKeyErrorMsg(
  WeaveMessageInfo *rcvdMsgInfo,
  const IPPacketInfo *rcvdMsgPacketInfo,
  WeaveConnection *con,
  WEAVE_ERROR keyErr
)

傳送金鑰錯誤訊息。

收到金鑰錯誤導致 Weave 訊息解碼失敗時,就會呼叫這個函式。

詳細說明
參數
[in] rcvdMsgInfo
指向收到 Weave 訊息的訊息資訊指標。
[in] rcvdMsgPacketInfo
指向收到 Weave 訊息的 IPPacketInfo 物件的指標。
[in] con
指向 WeaveConnection 物件的指標。
[in] keyErr
Weave 金鑰錯誤代碼。
傳回值
WEAVE_ERROR_NO_MEMORY
如果無法為新的交換結構定義或新訊息緩衝區分配記憶體。
WEAVE_ERROR_BUFFER_TOO_SMALL
如果緩衝區太小
WEAVE_NO_ERROR
如果方法成功。

SetCASEAuthDelegate

void SetCASEAuthDelegate(
  WeaveCASEAuthDelegate *delegate
)

SetKeyExportDelegate

void SetKeyExportDelegate(
  WeaveKeyExportDelegate *delegate
)

SetTAKEAuthDelegate

void SetTAKEAuthDelegate(
  WeaveTAKEChallengerAuthDelegate *delegate
)

SetTAKETokenAuthDelegate

void SetTAKETokenAuthDelegate(
  WeaveTAKETokenAuthDelegate *delegate
)

關機

WEAVE_ERROR Shutdown(
  void
)

StartCASESession

WEAVE_ERROR StartCASESession(
  WeaveConnection *con,
  uint64_t peerNodeId,
  const IPAddress & peerAddr,
  uint16_t peerPort,
  WeaveAuthMode requestedAuthMode,
  void *reqState,
  SessionEstablishedFunct onComplete,
  SessionErrorFunct onError,
  WeaveCASEAuthDelegate *authDelegate,
  uint64_t terminatingNodeId
)

系統會呼叫此方法來建立新的 CASE 工作階段,或找出現有的 CASE 工作階段。

詳細說明
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] peerNodeId
對等互連的節點 ID。
[in] peerAddr
對等互連節點的 IP 位址。
[in] peerPort
對等互連節點的通訊埠。
[in] requestedAuthMode
所需方式是用來驗證對等點。這必須是其中一種 CASE 驗證模式。
[in] reqState
指向要求者狀態的指標。
[in] onComplete
回呼函式的指標。建立要求的安全工作階段之後,系統就會呼叫此函式。
[in] onError
回呼函式的指標,如果要求的工作階段建立失敗,系統就會呼叫此函式。
[in] authDelegate
CASE 驗證委派物件的指標。
[in] terminatingNodeId
終止節點的工作階段節點 ID。如果輸入內容不同於 kNodeIdNotSpecified,表示已要求共用安全工作階段。
傳回值
WEAVE_NO_ERROR
成功時。

StartKeyExport

WEAVE_ERROR StartKeyExport(
  WeaveConnection *con,
  uint64_t peerNodeId,
  const IPAddress & peerAddr,
  uint16_t peerPort,
  uint32_t keyId,
  bool signMessage,
  void *reqState,
  KeyExportCompleteFunct onComplete,
  KeyExportErrorFunct onError,
  WeaveKeyExportDelegate *keyExportDelegate
)

StartPASESession

WEAVE_ERROR StartPASESession(
  WeaveConnection *con,
  WeaveAuthMode requestedAuthMode,
  void *reqState,
  SessionEstablishedFunct onComplete,
  SessionErrorFunct onError,
  const uint8_t *pw,
  uint16_t pwLen
)

系統會呼叫此方法來建立安全的 PASE 工作階段。

詳細說明
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] requestedAuthMode
所需方式是用來驗證對等點。這必須是一個 PASE 驗證模式。
[in] reqState
指向要求者狀態的指標。
[in] onComplete
回呼函式的指標。建立要求的安全工作階段之後,系統就會呼叫此函式。
[in] onError
回呼函式的指標,如果要求的工作階段建立失敗,系統就會呼叫此函式。
[in] pw
PASE 密鑰密碼的指標。
[in] pwLen
PASE 密鑰密碼的長度。
傳回值
WEAVE_NO_ERROR
成功時。

StartTAKESession

WEAVE_ERROR StartTAKESession(
  WeaveConnection *con,
  WeaveAuthMode requestedAuthMode,
  void *reqState,
  SessionEstablishedFunct onComplete,
  SessionErrorFunct onError,
  bool encryptAuthPhase,
  bool encryptCommPhase,
  bool timeLimitedIK,
  bool sendChallengerId,
  WeaveTAKEChallengerAuthDelegate *authDelegate
)

系統會呼叫此方法來建立安全的 TAKE 工作階段。

詳細說明
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] requestedAuthMode
所需方式是用來驗證對等點。這必須是其中一種 TAKE 驗證模式。
[in] reqState
指向要求者狀態的指標。
[in] onComplete
回呼函式的指標。建立要求的安全工作階段之後,系統就會呼叫此函式。
[in] onError
回呼函式的指標,如果要求的工作階段建立失敗,系統就會呼叫此函式。
[in] encryptAuthPhase
指出通訊協定驗證階段是否應加密的布林值標記。
[in] encryptCommPhase
布林值標記,指出通訊協定通訊階段是否應加密。
[in] timeLimitedIK
一個布林值標記,指出識別金鑰 (IK) 是否設有時間限制。
[in] sendChallengerId
布林值標記,指出是否應在訊息中加入驗證者身分。如果未包含 Weave 節點 ID 值,則會做為驗證者 ID 使用。
[in] authDelegate
指向 TAKE 驗證者驗證委派物件的指標。
傳回值
WEAVE_NO_ERROR
成功時。

WeaveSecurityManager

 WeaveSecurityManager(
  void
)