Direct-BT  2.3.1
Direct-BT - Direct Bluetooth Programming.
Public Member Functions | Protected Member Functions | List of all members
direct_bt::SMPPairConfirmMsg Class Reference

Vol 3, Part H: 3.5.3 Pairing Confirm message. More...

#include <SMPTypes.hpp>

Inheritance diagram for direct_bt::SMPPairConfirmMsg:
Collaboration diagram for direct_bt::SMPPairConfirmMsg:

Public Member Functions

 SMPPairConfirmMsg (const uint8_t *source, const jau::nsize_t length)
 
 SMPPairConfirmMsg (const jau::uint128_t &confirm_value)
 
constexpr_cxx20 jau::nsize_t getDataSize () const noexcept override
 Returns the required data size according to the specified packet, which should be within 0-22 or 64 octets. More...
 
constexpr jau::uint128_t getConfirmValue () const noexcept
 Returns the 128-bit Confirm value (16 octets) More...
 
constexpr_cxx20 std::string getName () const noexcept override
 
- Public Member Functions inherited from direct_bt::SMPEncKeyByteStream
 SMPEncKeyByteStream (const uint8_t *source, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
 SMPEncKeyByteStream (const Opcode opc, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
virtual ~SMPEncKeyByteStream () noexcept
 
- Public Member Functions inherited from direct_bt::SMPPDUMsg
 SMPPDUMsg (const uint8_t *source, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
 SMPPDUMsg (const Opcode opc, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
virtual ~SMPPDUMsg () noexcept
 
constexpr uint64_t getTimestamp () const noexcept
 
constexpr Opcode getOpcode () const noexcept
 SMP Command Codes Vol 3, Part H (SM): 3.3. More...
 
constexpr jau::nsize_t getPDUParamSize () const noexcept
 Returns the actual PDU size less one octet for the opcode, which should result in 0-22 octets or 64 octets. More...
 
constexpr jau::nsize_t getDataOffset () const noexcept
 Returns the octet offset to the data segment in this PDU including the mandatory opcode, i.e. More...
 
virtual std::string toString () const noexcept
 

Protected Member Functions

std::string valueString () const noexcept override
 
- Protected Member Functions inherited from direct_bt::SMPPDUMsg
void checkOpcode (const Opcode expected) const
 
void checkOpcode (const Opcode exp1, const Opcode exp2) const
 
virtual std::string baseString () const noexcept
 

Additional Inherited Members

- Public Types inherited from direct_bt::SMPPDUMsg
enum  Opcode : uint8_t {
  Opcode::UNDEFINED = 0x00, Opcode::PAIRING_REQUEST = 0x01, Opcode::PAIRING_RESPONSE = 0x02, Opcode::PAIRING_CONFIRM = 0x03,
  Opcode::PAIRING_RANDOM = 0x04, Opcode::PAIRING_FAILED = 0x05, Opcode::ENCRYPTION_INFORMATION = 0x06, Opcode::MASTER_IDENTIFICATION = 0x07,
  Opcode::IDENTITY_INFORMATION = 0x08, Opcode::IDENTITY_ADDRESS_INFORMATION = 0x09, Opcode::SIGNING_INFORMATION = 0x0A, Opcode::SECURITY_REQUEST = 0x0B,
  Opcode::PAIRING_PUBLIC_KEY = 0x0C, Opcode::PAIRING_DHKEY_CHECK = 0x0D, Opcode::PAIRING_KEYPRESS_NOTIFICATION = 0x0E
}
 SMP Command Codes Vol 3, Part H (SM): 3.3. More...
 
- Static Public Member Functions inherited from direct_bt::SMPPDUMsg
static constexpr uint8_t number (const Opcode rhs) noexcept
 
static std::string getOpcodeString (const Opcode opc) noexcept
 
static std::unique_ptr< const SMPPDUMsggetSpecialized (const uint8_t *buffer, jau::nsize_t const buffer_size) noexcept
 Return a newly created specialized instance pointer to base class. More...
 
template<class T >
static T * clone (const T &source) noexcept
 Clone template for convenience, based on derived class's copy-constructor. More...
 
- Protected Attributes inherited from direct_bt::SMPPDUMsg
POctets pdu
 actual received PDU More...
 
uint64_t ts_creation
 creation timestamp in milliseconds More...
 

Detailed Description

Vol 3, Part H: 3.5.3 Pairing Confirm message.

Vol 3 (Host), Part H (SM): 3 (SMP), 3.5 Pairing Methods

Opcode::PAIRING_CONFIRM

[uint8_t opcode]
jau::uint128_t confirm_value

Used following a successful Pairing Feature Exchange to start STK Generation for LE legacy pairing and LTK Generation for LE Secure Connections pairing.

Command is used by both devices to send the confirm value to the peer device,
see Vol 3, Part H, 2.3.5.5 SM - Pairing algo - LE legacy pairing phase 2 and
and Vol 3, Part H, 2.3.5.6 SM - Pairing algo - LE Secure Connections pairing phase 2.

The initiating device starts key generation by sending the Pairing Confirm command to the responding device.
If the initiating device wants to abort pairing it can transmit a Pairing Failed command instead.

The responding device sends the Pairing Confirm command after it has received a Pairing Confirm command from the initiating device.

Notable: No endian wise conversion shall occur on this data, since the encryption values are interpreted as a byte stream.

Definition at line 1035 of file SMPTypes.hpp.

Constructor & Destructor Documentation

◆ SMPPairConfirmMsg() [1/2]

direct_bt::SMPPairConfirmMsg::SMPPairConfirmMsg ( const uint8_t *  source,
const jau::nsize_t  length 
)
inline

Definition at line 1038 of file SMPTypes.hpp.

Here is the call graph for this function:

◆ SMPPairConfirmMsg() [2/2]

direct_bt::SMPPairConfirmMsg::SMPPairConfirmMsg ( const jau::uint128_t confirm_value)
inline

Definition at line 1044 of file SMPTypes.hpp.

Here is the call graph for this function:

Member Function Documentation

◆ getConfirmValue()

constexpr jau::uint128_t direct_bt::SMPPairConfirmMsg::getConfirmValue ( ) const
inlineconstexprnoexcept

Returns the 128-bit Confirm value (16 octets)

In LE legacy pairing, the initiating device sends Mconfirm and the responding device sends Sconfirm as defined in Vol 3, Part H, 2.3.5.5 SM - Pairing algo - LE legacy pairing phase 2

In LE Secure Connections, Ca and Cb are defined in Vol 3, Part H, Section 2.2.6 SM - Crypto Toolbox - LE Secure Connections confirm value generation function f4.
See Vol 3, Part H, 2.3.5.6 SM - Pairing algo - LE Secure Connections pairing phase 2.

Definition at line 1067 of file SMPTypes.hpp.

Here is the call graph for this function:

◆ getDataSize()

constexpr_cxx20 jau::nsize_t direct_bt::SMPPairConfirmMsg::getDataSize ( ) const
inlineoverridevirtualnoexcept

Returns the required data size according to the specified packet, which should be within 0-22 or 64 octets.

See also
SMPPDUMsg::getPDUParamSize()

Reimplemented from direct_bt::SMPPDUMsg.

Definition at line 1050 of file SMPTypes.hpp.

Here is the caller graph for this function:

◆ getName()

constexpr_cxx20 std::string direct_bt::SMPPairConfirmMsg::getName ( ) const
inlineoverridevirtualnoexcept

Reimplemented from direct_bt::SMPPDUMsg.

Definition at line 1069 of file SMPTypes.hpp.

◆ valueString()

std::string direct_bt::SMPPairConfirmMsg::valueString ( ) const
inlineoverrideprotectedvirtualnoexcept

Reimplemented from direct_bt::SMPPDUMsg.

Definition at line 1074 of file SMPTypes.hpp.

Here is the call graph for this function:

The documentation for this class was generated from the following file: