Direct-BT v3.3.0-1-gc2d430c
Direct-BT - Direct Bluetooth Programming.
Public Member Functions | Protected Member Functions | List of all members
direct_bt::SMPMasterIdentMsg Class Referencefinal

Vol 3, Part H: 3.6.3 Master Identification message. More...

#include <SMPTypes.hpp>

Inheritance diagram for direct_bt::SMPMasterIdentMsg:
Collaboration diagram for direct_bt::SMPMasterIdentMsg:

Public Member Functions

 SMPMasterIdentMsg (const uint16_t ediv, const uint64_t &rand)
 
 SMPMasterIdentMsg (const uint8_t *source, const jau::nsize_t length)
 
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 uint16_t getEDIV () const noexcept
 Returns the 16-bit EDIV value (2 octets) being distributed. More...
 
std::string getName () const noexcept override
 
constexpr uint64_t getRand () const noexcept
 Returns the 64-bit Rand value (8 octets) being distributed. More...
 
- Public Member Functions inherited from direct_bt::SMPEncKeyByteStream
 SMPEncKeyByteStream (const Opcode opc, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
 SMPEncKeyByteStream (const uint8_t *source, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
 ~SMPEncKeyByteStream () noexcept override=default
 
- Public Member Functions inherited from direct_bt::SMPPDUMsg
 SMPPDUMsg (const Opcode opc, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
 SMPPDUMsg (const uint8_t *source, const jau::nsize_t size)
 Persistent memory, w/ ownership . More...
 
 SMPPDUMsg (const uint8_t *source, const jau::nsize_t size, const jau::nsize_t min_size)
 Persistent memory, w/ ownership . More...
 
virtual ~SMPPDUMsg () noexcept=default
 
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 constexpr_cxx20 jau::nsize_t getDataSize () const noexcept
 Returns the required data size according to the specified packet, which should be within 0-22 or 64 octets. More...
 
virtual std::string getName () 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 uint64_t getTimestamp () const noexcept
 
virtual std::string toString () const noexcept
 

Protected Member Functions

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

Additional Inherited Members

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

Detailed Description

Vol 3, Part H: 3.6.3 Master Identification message.

Vol 3 (Host), Part H (SM): 3 (SMP), 3.6 SECURITY IN BLUETOOTH LOW ENERGY
Vol 3 (Host), Part H (SM): 3 (SMP), 3.6.1 Key distribution and generation
Vol 3 (Host), Part H (SM): 2 (SM), 2.4.1 Definition of keys and values

Opcode::MASTER_IDENTIFICATION

[uint8_t opcode]
uint16_t ediv
uint64_t rand

Message is used in the LE legacy pairing Transport Specific Key Distribution phase to distribute Encrypted Diversifier (EDIV) and Random Number (Rand) which are used when encrypting future connections.

The message shall only be sent when the link has been encrypted or re-encrypted using the generated LTK.

Legacy: #2 in distribution

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

Definition at line 1749 of file SMPTypes.hpp.

Constructor & Destructor Documentation

◆ SMPMasterIdentMsg() [1/2]

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

Definition at line 1752 of file SMPTypes.hpp.

◆ SMPMasterIdentMsg() [2/2]

direct_bt::SMPMasterIdentMsg::SMPMasterIdentMsg ( const uint16_t  ediv,
const uint64_t &  rand 
)
inline

Definition at line 1759 of file SMPTypes.hpp.

Member Function Documentation

◆ getDataSize()

constexpr_cxx20 jau::nsize_t direct_bt::SMPMasterIdentMsg::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 1767 of file SMPTypes.hpp.

◆ getEDIV()

constexpr uint16_t direct_bt::SMPMasterIdentMsg::getEDIV ( ) const
inlineconstexprnoexcept

Returns the 16-bit EDIV value (2 octets) being distributed.

See Vol 3, Part H, 2.4.2.3 SM - Generation of CSRK - LE legacy pairing - generation of LTK, EDIV and Rand.

Definition at line 1777 of file SMPTypes.hpp.

◆ getRand()

constexpr uint64_t direct_bt::SMPMasterIdentMsg::getRand ( ) const
inlineconstexprnoexcept

Returns the 64-bit Rand value (8 octets) being distributed.

See Vol 3, Part H, 2.4.2.3 SM - Generation of CSRK - LE legacy pairing - generation of LTK, EDIV and Rand.

Definition at line 1785 of file SMPTypes.hpp.

◆ getName()

std::string direct_bt::SMPMasterIdentMsg::getName ( ) const
inlineoverridevirtualnoexcept

Reimplemented from direct_bt::SMPPDUMsg.

Definition at line 1787 of file SMPTypes.hpp.

◆ valueString()

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

Reimplemented from direct_bt::SMPPDUMsg.

Definition at line 1792 of file SMPTypes.hpp.


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