BLE 보안
이 모듈에는 BLE Secure (TLS over BLE) 통신을 제어하는 기능이 포함되어 있습니다.
요약
이 모듈에는 TCAT 통신을 구현하는 함수가 포함되어 있습니다.
이 모듈의 함수는 BLE Secure API 기능 (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
)이 사용 설정된 경우 사용할 수 있습니다.
이 모듈의 함수는 TCAT 기능 (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
)이 사용 설정된 경우 사용할 수 있습니다.
열거형 |
|
---|---|
otTcatApplicationProtocol{
|
enum TCAT 애플리케이션 프로토콜을 나타냅니다. |
otTcatCommandClass{
|
enum TCAT 명령어 클래스를 나타냅니다. |
otTcatStatusCode{
|
enum TCAT 상태 코드를 나타냅니다. |
Typedef |
|
---|---|
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 애플리케이션 데이터 전송 TLV가 포함된 보안 BLE 데이터 패킷을 전송합니다.
|
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
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8을 사용하여 TLS 세션의 해당 비공개 키로 로컬 기기의 X509 인증서를 설정합니다.
|
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 값에 오류가 있습니다. |
Typedef
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 세션이 실행되는 동안 지속되고 변경되지 않은 상태로 유지되어야 합니다(MUST).
함수
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는 바이너리 형식으로 제공됩니다. 속성 길이는 속성을 성공적으로 읽은 경우 설정되고 성공하지 못하면 0으로 설정됩니다. 속성을 성공적으로 읽은 경우 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로 설정됩니다.
속성 길이는 속성을 성공적으로 읽은 경우 설정되고 성공하지 못하면 0으로 설정됩니다. 연결이 활성화되어 있어야 합니다.
세부정보 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||
반환 값 |
|
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로 설정됩니다.
속성 길이는 속성을 성공적으로 읽은 경우 설정되고 성공하지 못하면 0으로 설정됩니다. 연결이 활성화되어 있어야 합니다.
세부정보 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||
반환 값 |
|
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 애플리케이션 데이터 전송 TLV가 포함된 보안 BLE 데이터 패킷을 전송합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
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를 설정합니다.
피어 인증서를 검증하는 데 필요합니다.
보안 BLE를 위한 TLS 모드 'ECDHE ECDSA with AES 128 CCM 8'.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
otBleSecureSetCertificate
void otBleSecureSetCertificate( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength )
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8을 사용하여 TLS 세션의 해당 비공개 키로 로컬 기기의 X509 인증서를 설정합니다.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
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 서비스 이름의 최대 문자열 길이입니다 (null 문자는 포함되지 않음).
자료
OpenThread API 참조 주제는 GitHub에서 제공되는 소스 코드에서 비롯됩니다. 자세한 내용을 알아보거나 문서에 참여하려면 리소스를 참고하세요.