BLE 安全
這個模組內含控管 BLE 安全 (透過 BLE 傳輸傳輸層安全標準 (TLS)) 通訊的函式。
摘要
這個模組內含實作 TCAT 通訊的函式,
啟用 BLE Secure API 功能 (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) 時,即可使用這個模組中的函式。
啟用 TCAT 功能 (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) 後,即可使用這個模組中的函式。
列舉 |
|
---|---|
otTcatApplicationProtocol{
|
列舉 代表 TCAT 應用程式通訊協定。 |
otTcatCommandClass{
|
列舉 代表 TCAT 指令類別。 |
otTcatStatusCode{
|
列舉 代表 TCAT 狀態碼。 |
Typedefs |
|
---|---|
otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
|
typedefvoid(*
良好安全連線狀態變更時要呼叫的指標。 |
otHandleBleSecureReceive
|
typedef 透過 BLE 安全傳輸層安全標準 (TLS) 連線收到資料時呼叫的指標。 |
otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
|
typedefvoid(*
透過 TCAT TLS 連線收到應用程式資料時要呼叫的指標。 |
otHandleTcatJoin)(otError aError, void *aContext)
|
typedefvoid(*
用來通知彙整作業已完成的呼叫指標。 |
otTcatApplicationProtocol
|
typedef 代表 TCAT 應用程式通訊協定。 |
otTcatCommandClass
|
typedefenum otTcatCommandClass
代表 TCAT 指令類別。 |
otTcatStatusCode
|
typedefenum otTcatStatusCode
代表 TCAT 狀態碼。 |
otTcatVendorInfo
|
typedefstruct otTcatVendorInfo
這個結構代表 TCAT 供應商資訊。 |
函式 |
|
---|---|
otBleSecureConnect(otInstance *aInstance)
|
使用已開啟 BLE 連線的對等點初始化傳輸層安全標準 (TLS) 工作階段。
|
otBleSecureDisconnect(otInstance *aInstance)
|
void
停止 BLE 和 TLS 連線。
|
otBleSecureFlush(otInstance *aInstance)
|
清除傳送緩衝區。
|
otBleSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength)
|
傳回採用 Base64 編碼的對等 x509 憑證。
|
otBleSecureGetPeerSubjectAttributeByOid(otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type)
|
傳回對等 x509 憑證主體的 OID 識別的屬性值。
|
otBleSecureGetThreadAttributeFromOwnCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
從自有 x509 憑證的 v3 延伸模組傳回 OID 1.3.6.1.4.1.44970.x 的屬性值,最後一位數的 x 設為 aThreadOidDescriptor。
|
otBleSecureGetThreadAttributeFromPeerCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
從對等 x509 憑證的 v3 延伸模組傳回 OID 1.3.6.1.4.1.44970.x 的屬性值,最後一位數的 x 設為 aThreadOidDescriptor。
|
otBleSecureIsCommandClassAuthorized(otInstance *aInstance, otTcatCommandClass aCommandClass)
|
bool
指出 TCAT 指令類別是否已獲得授權。
|
otBleSecureIsConnected(otInstance *aInstance)
|
bool
指出 TLS 工作階段是否已連線。
|
otBleSecureIsConnectionActive(otInstance *aInstance)
|
bool
表示 TLS 工作階段是否已啟用 (連線或連線)。
|
otBleSecureIsTcatEnabled(otInstance *aInstance)
|
bool
指出 TCAT 代理程式是否已啟用。
|
otBleSecureSend(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
傳送安全的 BLE 資料封包。
|
otBleSecureSendApplicationTlv(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
傳送含有 TCAT 的 BLE 資料封包,傳送應用程式資料 TLV。
|
otBleSecureSendMessage(otInstance *aInstance, otMessage *aMessage)
|
傳送安全的 BLE 郵件。
|
otBleSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
|
void
設定信任的頂層 CA。
|
otBleSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
|
void
為本機裝置的 X509 憑證設定與 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 的 TLS 工作階段對應的私密金鑰。
|
otBleSecureSetPsk(otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength)
|
void
設定預先共用金鑰 (PSK) 和加密套件 TLS_PSK_WITH_AES_128_CCM_8。
|
otBleSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
|
void
設定 BLE 安全連線的驗證模式。
|
otBleSecureStart(otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext)
|
啟動 BLE Secure 服務。
|
otBleSecureStop(otInstance *aInstance)
|
void
停止 BLE 安全伺服器。
|
otBleSecureTcatStart(otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler)
|
透過 BLE Secure 啟用 TCAT 通訊協定。
|
結構 |
|
---|---|
otTcatVendorInfo |
這個結構代表 TCAT 供應商資訊。 |
列舉
otTcatApplicationProtocol
otTcatApplicationProtocol
代表 TCAT 應用程式通訊協定。
屬性 | |
---|---|
OT_TCAT_APPLICATION_PROTOCOL_NONE
|
訊息在未啟用 TCAT 代理程式的情況下傳送。 |
OT_TCAT_APPLICATION_PROTOCOL_STATUS
|
訊息已導向 UDP 服務。 |
OT_TCAT_APPLICATION_PROTOCOL_TCP
|
訊息會導向 TCP 服務。 |
otTcatCommandClass
otTcatCommandClass
代表 TCAT 指令類別。
屬性 | |
---|---|
OT_TCAT_COMMAND_CLASS_APPLICATION
|
與應用程式層相關的 TCAT 指令。 |
OT_TCAT_COMMAND_CLASS_COMMISSIONING
|
與執行調用相關的 TCAT 指令。 |
OT_TCAT_COMMAND_CLASS_DECOMMISSIONING
|
與停用相關的 TCAT 指令。 |
OT_TCAT_COMMAND_CLASS_EXTRACTION
|
與金鑰擷取相關的 TCAT 指令。 |
OT_TCAT_COMMAND_CLASS_GENERAL
|
與一般作業相關的 TCAT 指令。 |
otTcatStatusCode
otTcatStatusCode
代表 TCAT 狀態碼。
屬性 | |
---|---|
OT_TCAT_STATUS_BUSY
|
資源忙碌中,因此無法執行指令。 |
OT_TCAT_STATUS_GENERAL_ERROR
|
不符合任何其他類別的錯誤。 |
OT_TCAT_STATUS_HASH_ERROR
|
委員提供的雜湊值不正確。 |
OT_TCAT_STATUS_PARSE_ERROR
|
無法正確剖析要求 / 指令。 |
OT_TCAT_STATUS_SUCCESS
|
已成功處理指令或要求。 |
OT_TCAT_STATUS_UNAUTHORIZED
|
寄件者沒有足夠的授權,無法使用指定的指令。 |
OT_TCAT_STATUS_UNDEFINED
|
要求的值、資料或服務未定義 (目前) 或不存在。 |
OT_TCAT_STATUS_UNSUPPORTED
|
不支援要求的指令或收到的 TLV。 |
OT_TCAT_STATUS_VALUE_ERROR
|
已傳輸的 TLV 值含有錯誤。 |
Typedefs
otHandleBleSecureConnect
void(* otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
良好安全連線狀態變更時要呼叫的指標。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
otHandleBleSecureReceive
otHandleTcatApplicationDataReceive otHandleBleSecureReceive
透過 BLE 安全傳輸層安全標準 (TLS) 連線收到資料時呼叫的指標。
otHandleTcatApplicationDataReceive
void(* otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
透過 TCAT TLS 連線收到應用程式資料時要呼叫的指標。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
otHandleTcatJoin
void(* otHandleTcatJoin)(otError aError, void *aContext)
用來通知彙整作業已完成的呼叫指標。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otTcatApplicationProtocol
enum otTcatApplicationProtocol otTcatApplicationProtocol
代表 TCAT 應用程式通訊協定。
otTcatVendorInfo
struct otTcatVendorInfo otTcatVendorInfo
這個結構代表 TCAT 供應商資訊。
在 TCAT 工作階段執行期間,這個結構的內容「必須」保存並保持不變。
函式
otBleSecureConnect
otError otBleSecureConnect( otInstance *aInstance )
使用已開啟 BLE 連線的對等點初始化傳輸層安全標準 (TLS) 工作階段。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回值 |
|
otBleSecureDisconnect
void otBleSecureDisconnect( otInstance *aInstance )
停止 BLE 和 TLS 連線。
詳細說明 | |||
---|---|---|---|
參數 |
|
otBleSecureFlush
otError otBleSecureFlush( otInstance *aInstance )
清除傳送緩衝區。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otBleSecureGetPeerCertificateBase64
otError otBleSecureGetPeerCertificateBase64( otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength )
傳回採用 Base64 編碼的對等 x509 憑證。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
otBleSecureGetPeerSubjectAttributeByOid
otError otBleSecureGetPeerSubjectAttributeByOid( otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type )
傳回對等 x509 憑證主體的 OID 識別的屬性值。
對等 OID 以二進位格式提供。如果屬性成功讀取,屬性長度會設定;失敗時,則會設定屬性長度。如果屬性成功讀取,就會採用 ITU-T X.690 標準中定義的 ASN.1 類型。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|
otBleSecureGetThreadAttributeFromOwnCertificate
otError otBleSecureGetThreadAttributeFromOwnCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
從自有 x509 憑證的 v3 延伸模組傳回 OID 1.3.6.1.4.1.44970.x 的屬性值,最後一位數的 x 設為 aThreadOidDescriptor。
如果屬性成功讀取,屬性長度會設定;失敗時,則會設定屬性長度。必須連上網路才能運作。
詳細說明 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||
傳回值 |
|
otBleSecureGetThreadAttributeFromPeerCertificate
otError otBleSecureGetThreadAttributeFromPeerCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
從對等 x509 憑證的 v3 延伸模組傳回 OID 1.3.6.1.4.1.44970.x 的屬性值,最後一位數的 x 設為 aThreadOidDescriptor。
如果屬性成功讀取,屬性長度會設定;失敗時,則會設定屬性長度。必須連上網路才能運作。
詳細說明 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||
傳回值 |
|
otBleSecureIsCommandClassAuthorized
bool otBleSecureIsCommandClassAuthorized( otInstance *aInstance, otTcatCommandClass aCommandClass )
指出 TCAT 指令類別是否已獲得授權。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otBleSecureIsConnected
bool otBleSecureIsConnected( otInstance *aInstance )
指出 TLS 工作階段是否已連線。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otBleSecureIsConnectionActive
bool otBleSecureIsConnectionActive( otInstance *aInstance )
表示 TLS 工作階段是否已啟用 (連線或連線)。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otBleSecureIsTcatEnabled
bool otBleSecureIsTcatEnabled( otInstance *aInstance )
指出 TCAT 代理程式是否已啟用。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
otBleSecureSend
otError otBleSecureSend( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
傳送安全的 BLE 資料封包。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otBleSecureSendApplicationTlv
otError otBleSecureSendApplicationTlv( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
傳送含有 TCAT 的 BLE 資料封包,傳送應用程式資料 TLV。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otBleSecureSendMessage
otError otBleSecureSendMessage( otInstance *aInstance, otMessage *aMessage )
傳送安全的 BLE 郵件。
如果傳回值為 OT_ERROR_NONE,OpenThread 會取得 aMessage
的擁有權,呼叫端則不應再參照 aMessage
。如果傳回的值不是 OT_ERROR_NONE,呼叫端會保留 aMessage
的擁有權,如果不再需要訊息緩衝區,就會釋放 aMessage
。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
傳回值 |
|
otBleSecureSetCaCertificateChain
void otBleSecureSetCaCertificateChain( otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength )
設定信任的頂層 CA。
需要用來驗證對等點的憑證。
傳輸層安全標準 (TLS) 模式「ECDHE ECDSA 搭配 AES 128 CCM 8」,確保 BLE 安全無虞。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otBleSecureSetCertificate
void otBleSecureSetCertificate( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength )
為本機裝置的 X509 憑證設定與 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 的 TLS 工作階段對應的私密金鑰。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
otBleSecureSetPsk
void otBleSecureSetPsk( otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength )
設定預先共用金鑰 (PSK) 和加密套件 TLS_PSK_WITH_AES_128_CCM_8。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
otBleSecureSetSslAuthMode
void otBleSecureSetSslAuthMode( otInstance *aInstance, bool aVerifyPeerCertificate )
設定 BLE 安全連線的驗證模式。
停用或啟用對等憑證的驗證功能。必須在開始之前呼叫。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otBleSecureStart
otError otBleSecureStart( otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext )
啟動 BLE Secure 服務。
啟用 TLV 模式時,系統會在收到完整的 TLV 且訊息偏移指向 TLV 值時呼叫 aReceiveHandler
函式。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
otBleSecureStop
void otBleSecureStop( otInstance *aInstance )
停止 BLE 安全伺服器。
詳細說明 | |||
---|---|---|---|
參數 |
|
otBleSecureTcatStart
otError otBleSecureTcatStart( otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler )
透過 BLE Secure 啟用 TCAT 通訊協定。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
巨集
OT_TCAT_MAX_SERVICE_NAME_LENGTH
OT_TCAT_MAX_SERVICE_NAME_LENGTH 15
UDP 或 TCP 服務名稱的字串長度上限 (不含空值字元)。
資源
OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。