mirror of https://github.com/ARMmbed/mbed-os.git
doxygen, moved types to common
parent
62502fe1c8
commit
5498b79f55
|
@ -183,6 +183,82 @@ struct io_capability_t : SafeEnum<io_capability_t, uint8_t> {
|
||||||
io_capability_t(type value) : SafeEnum<io_capability_t, uint8_t>(value) { }
|
io_capability_t(type value) : SafeEnum<io_capability_t, uint8_t>(value) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Passkey stored as a number.
|
||||||
|
*/
|
||||||
|
typedef uint32_t passkey_num_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Passkey stored as a string of digits.
|
||||||
|
*/
|
||||||
|
class PasskeyAsci {
|
||||||
|
public:
|
||||||
|
static const uint8_t PASSKEY_LEN = 6;
|
||||||
|
static const uint8_t NUMBER_OFFSET = '0';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default to all zeroes
|
||||||
|
*/
|
||||||
|
PasskeyAsci() {
|
||||||
|
memset(asci, NUMBER_OFFSET, PASSKEY_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a data from a string.
|
||||||
|
*
|
||||||
|
* @param input_value value of the data.
|
||||||
|
*/
|
||||||
|
PasskeyAsci(const uint8_t* passkey) {
|
||||||
|
if (passkey) {
|
||||||
|
memcpy(asci, passkey, PASSKEY_LEN);
|
||||||
|
} else {
|
||||||
|
memset(asci, NUMBER_OFFSET, PASSKEY_LEN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a data from a number.
|
||||||
|
*
|
||||||
|
* @param input_value value of the data.
|
||||||
|
*/
|
||||||
|
PasskeyAsci(passkey_num_t passkey) {
|
||||||
|
for (int i = 5, m = 100000; i >= 0; --i, m /= 10) {
|
||||||
|
uint32_t result = passkey / m;
|
||||||
|
asci[i] = NUMBER_OFFSET + result;
|
||||||
|
passkey -= result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cast to number.
|
||||||
|
*/
|
||||||
|
operator passkey_num_t() {
|
||||||
|
return to_num(asci);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert ASCI string of digits into a number.
|
||||||
|
* @param ASCI string of 6 digits stored as ASCI characters
|
||||||
|
* @return Passkey as a number.
|
||||||
|
*/
|
||||||
|
static uint32_t to_num(const uint8_t *asci) {
|
||||||
|
uint32_t passkey = 0;
|
||||||
|
for (size_t i = 0, m = 1; i < PASSKEY_LEN; ++i, m *= 10) {
|
||||||
|
passkey += (asci[i] - NUMBER_OFFSET) * m;
|
||||||
|
}
|
||||||
|
return passkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the pointer to the buffer holding the string.
|
||||||
|
*/
|
||||||
|
uint8_t* value() {
|
||||||
|
return asci;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
uint8_t asci[PASSKEY_LEN];
|
||||||
|
};
|
||||||
|
|
||||||
template <size_t octet_size>
|
template <size_t octet_size>
|
||||||
struct octet_type_t {
|
struct octet_type_t {
|
||||||
/**
|
/**
|
||||||
|
@ -250,15 +326,20 @@ private:
|
||||||
uint8_t value[octet_size];
|
uint8_t value[octet_size];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 128 bit keys */
|
/** 128 bit keys used by paired devices */
|
||||||
class key_t : public octet_type_t<16> {} ;
|
class key_t : public octet_type_t<16> {} ;
|
||||||
class irk_t : public key_t {};
|
class irk_t : public key_t {};
|
||||||
class csrk_t : public key_t {};
|
class csrk_t : public key_t {};
|
||||||
class ltk_t : public key_t {};
|
class ltk_t : public key_t {};
|
||||||
|
|
||||||
|
/** Used to identify LTK for legacy pairing connections */
|
||||||
typedef octet_type_t<2> ediv_t;
|
typedef octet_type_t<2> ediv_t;
|
||||||
typedef octet_type_t<8> rand_t;
|
typedef octet_type_t<8> rand_t;
|
||||||
|
|
||||||
|
/** Used to store the random data generated by the chip */
|
||||||
typedef octet_type_t<8> random_data_t;
|
typedef octet_type_t<8> random_data_t;
|
||||||
|
|
||||||
|
/** Out of band data exchanged during pairing */
|
||||||
typedef octet_type_t<16> oob_data_t;
|
typedef octet_type_t<16> oob_data_t;
|
||||||
|
|
||||||
} // namespace ble
|
} // namespace ble
|
||||||
|
|
|
@ -27,16 +27,18 @@ namespace generic {
|
||||||
|
|
||||||
using ble::pal::address_t;
|
using ble::pal::address_t;
|
||||||
using ble::pal::advertising_peer_address_type_t;
|
using ble::pal::advertising_peer_address_type_t;
|
||||||
|
using ble::pal::AuthenticationMask;
|
||||||
|
using ble::pal::KeyDistribution;
|
||||||
|
|
||||||
using ble::irk_t;
|
using ble::irk_t;
|
||||||
using ble::csrk_t;
|
using ble::csrk_t;
|
||||||
using ble::ltk_t;
|
using ble::ltk_t;
|
||||||
using ble::ediv_t;
|
using ble::ediv_t;
|
||||||
using ble::rand_t;
|
using ble::rand_t;
|
||||||
using ble::pal::AuthenticationMask;
|
|
||||||
using ble::pal::KeyDistribution;
|
|
||||||
using ble::pairing_failure_t;
|
using ble::pairing_failure_t;
|
||||||
using ble::pal::PasskeyAsci;
|
using ble::PasskeyAsci;
|
||||||
using ble::pal::passkey_num_t;
|
using ble::passkey_num_t;
|
||||||
|
|
||||||
typedef SecurityManager::SecurityIOCapabilities_t SecurityIOCapabilities_t;
|
typedef SecurityManager::SecurityIOCapabilities_t SecurityIOCapabilities_t;
|
||||||
|
|
||||||
class GenericSecurityManagerEventHandler;
|
class GenericSecurityManagerEventHandler;
|
||||||
|
|
|
@ -32,43 +32,6 @@ typedef SecurityManager::SecurityMode_t SecurityMode_t;
|
||||||
typedef SecurityManager::LinkSecurityStatus_t LinkSecurityStatus_t;
|
typedef SecurityManager::LinkSecurityStatus_t LinkSecurityStatus_t;
|
||||||
typedef SecurityManager::Keypress_t Keypress_t;
|
typedef SecurityManager::Keypress_t Keypress_t;
|
||||||
|
|
||||||
typedef uint32_t passkey_num_t;
|
|
||||||
|
|
||||||
class PasskeyAsci {
|
|
||||||
public:
|
|
||||||
static const uint8_t NUMBER_OFFSET = '0';
|
|
||||||
|
|
||||||
PasskeyAsci() {
|
|
||||||
memset(asci, NUMBER_OFFSET, SecurityManager::PASSKEY_LEN);
|
|
||||||
}
|
|
||||||
PasskeyAsci(const uint8_t* passkey) {
|
|
||||||
if (passkey) {
|
|
||||||
memcpy(asci, passkey, SecurityManager::PASSKEY_LEN);
|
|
||||||
} else {
|
|
||||||
memset(asci, NUMBER_OFFSET, SecurityManager::PASSKEY_LEN);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PasskeyAsci(passkey_num_t passkey) {
|
|
||||||
for (int i = 5, m = 100000; i >= 0; --i, m /= 10) {
|
|
||||||
uint32_t result = passkey / m;
|
|
||||||
asci[i] = NUMBER_OFFSET + result;
|
|
||||||
passkey -= result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
operator passkey_num_t() {
|
|
||||||
return to_num(asci);
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t to_num(const uint8_t *asci) {
|
|
||||||
uint32_t passkey = 0;
|
|
||||||
for (size_t i = 0, m = 1; i < SecurityManager::PASSKEY_LEN; ++i, m *= 10) {
|
|
||||||
passkey += (asci[i] - NUMBER_OFFSET) * m;
|
|
||||||
}
|
|
||||||
return passkey;
|
|
||||||
}
|
|
||||||
uint8_t asci[SecurityManager::PASSKEY_LEN];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Key distribution as required by the SMP with convenient setters and getters,
|
* Key distribution as required by the SMP with convenient setters and getters,
|
||||||
* use value() to get the octet you can use directly in the PDU.
|
* use value() to get the octet you can use directly in the PDU.
|
||||||
|
@ -242,7 +205,7 @@ public:
|
||||||
* or cancel the pairing procedure (cancel_pairing).
|
* or cancel the pairing procedure (cancel_pairing).
|
||||||
*
|
*
|
||||||
* @param[in] connection connection handle
|
* @param[in] connection connection handle
|
||||||
* @param[in] oob_data_flag is oob data present
|
* @param[in] oob_data_flag is out of band data present
|
||||||
* @param[in] authentication_requirements authentication requirements
|
* @param[in] authentication_requirements authentication requirements
|
||||||
* @param[in] initiator_dist key distribution
|
* @param[in] initiator_dist key distribution
|
||||||
* @param[in] responder_dist key distribution
|
* @param[in] responder_dist key distribution
|
||||||
|
|
|
@ -762,7 +762,7 @@ void GenericSecurityManager::on_passkey_display(
|
||||||
passkey_num_t passkey
|
passkey_num_t passkey
|
||||||
) {
|
) {
|
||||||
set_mitm_performed(connection);
|
set_mitm_performed(connection);
|
||||||
eventHandler->passkeyDisplay(connection, PasskeyAsci(passkey).asci);
|
eventHandler->passkeyDisplay(connection, PasskeyAsci(passkey).value());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenericSecurityManager::on_keypress_notification(
|
void GenericSecurityManager::on_keypress_notification(
|
||||||
|
|
Loading…
Reference in New Issue