Direct-BT
2.3.1
Direct-BT - Direct Bluetooth Programming.
|
Vol 3, Part H: 3.6.3 Master Identification message. More...
#include <SMPTypes.hpp>
Public Member Functions | |
SMPMasterIdentMsg (const uint8_t *source, const jau::nsize_t length) | |
SMPMasterIdentMsg (const uint16_t ediv, const uint64_t &rand) | |
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... | |
constexpr uint64_t | getRand () const noexcept |
Returns the 64-bit Rand value (8 octets) being distributed. 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 SMPPDUMsg > | getSpecialized (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... | |
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
[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 a byte stream.
Definition at line 1520 of file SMPTypes.hpp.
|
inline |
|
inline |
|
inlineoverridevirtualnoexcept |
Returns the required data size according to the specified packet, which should be within 0-22 or 64 octets.
Reimplemented from direct_bt::SMPPDUMsg.
Definition at line 1536 of file SMPTypes.hpp.
|
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 1546 of file SMPTypes.hpp.
|
inlineoverridevirtualnoexcept |
Reimplemented from direct_bt::SMPPDUMsg.
Definition at line 1556 of file SMPTypes.hpp.
|
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 1554 of file SMPTypes.hpp.
|
inlineoverrideprotectedvirtualnoexcept |
Reimplemented from direct_bt::SMPPDUMsg.
Definition at line 1561 of file SMPTypes.hpp.