mirror of https://github.com/ARMmbed/mbed-os.git
commit
c1d15b5731
|
@ -28,7 +28,7 @@
|
||||||
#ifdef YOTTA_CFG_MBED_OS
|
#ifdef YOTTA_CFG_MBED_OS
|
||||||
#include "mbed-drivers/mbed_error.h"
|
#include "mbed-drivers/mbed_error.h"
|
||||||
#else
|
#else
|
||||||
#include "mbed_error.h"
|
#include "platform/mbed_error.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "platform/mbed_toolchain.h"
|
#include "platform/mbed_toolchain.h"
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "ble/BLETypes.h"
|
#include "ble/BLETypes.h"
|
||||||
#include "ble/pal/GenericAccessService.h"
|
#include "ble/pal/GenericAccessService.h"
|
||||||
#include "ble/pal/EventQueue.h"
|
#include "ble/pal/EventQueue.h"
|
||||||
#include "ble/ConnectionEventMonitor.h"
|
#include "ble/pal/ConnectionEventMonitor.h"
|
||||||
|
|
||||||
#include "drivers/Timeout.h"
|
#include "drivers/Timeout.h"
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ namespace generic {
|
||||||
* @attention: Not part of the public interface of BLE API.
|
* @attention: Not part of the public interface of BLE API.
|
||||||
*/
|
*/
|
||||||
class GenericGap : public ::Gap,
|
class GenericGap : public ::Gap,
|
||||||
public ConnectionEventMonitor {
|
public pal::ConnectionEventMonitor {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -275,7 +275,7 @@ public:
|
||||||
/** @note Implements ConnectionEventMonitor.
|
/** @note Implements ConnectionEventMonitor.
|
||||||
* @copydoc ConnectionEventMonitor::set_connection_event_handler
|
* @copydoc ConnectionEventMonitor::set_connection_event_handler
|
||||||
*/
|
*/
|
||||||
virtual void set_connection_event_handler(ConnectionEventHandler *_connection_event_handler);
|
void set_connection_event_handler(pal::ConnectionEventHandler *_connection_event_handler);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void on_scan_timeout();
|
void on_scan_timeout();
|
||||||
|
@ -317,7 +317,7 @@ private:
|
||||||
mutable Whitelist_t _whitelist;
|
mutable Whitelist_t _whitelist;
|
||||||
mbed::Timeout _advertising_timeout;
|
mbed::Timeout _advertising_timeout;
|
||||||
mbed::Timeout _scan_timeout;
|
mbed::Timeout _scan_timeout;
|
||||||
ConnectionEventHandler *_connection_event_handler;
|
pal::ConnectionEventHandler *_connection_event_handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include "ble/BLETypes.h"
|
#include "ble/BLETypes.h"
|
||||||
#include "ble/pal/SecurityDb.h"
|
#include "ble/pal/SecurityDb.h"
|
||||||
#include "platform/Callback.h"
|
#include "platform/Callback.h"
|
||||||
#include "ble/Gap.h"
|
#include "ble/pal/ConnectionEventMonitor.h"
|
||||||
#include "ble/generic/GenericGap.h"
|
#include "ble/generic/GenericGap.h"
|
||||||
#include "ble/pal/PalSecurityManager.h"
|
#include "ble/pal/PalSecurityManager.h"
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class GenericSecurityManagerEventHandler;
|
||||||
|
|
||||||
class GenericSecurityManager : public SecurityManager,
|
class GenericSecurityManager : public SecurityManager,
|
||||||
public pal::SecurityManagerEventHandler,
|
public pal::SecurityManagerEventHandler,
|
||||||
public ConnectionEventHandler {
|
public pal::ConnectionEventHandler {
|
||||||
public:
|
public:
|
||||||
typedef ble::pal::SecurityEntry_t SecurityEntry_t;
|
typedef ble::pal::SecurityEntry_t SecurityEntry_t;
|
||||||
typedef ble::pal::SecurityEntryKeys_t SecurityEntryKeys_t;
|
typedef ble::pal::SecurityEntryKeys_t SecurityEntryKeys_t;
|
||||||
|
@ -237,10 +237,10 @@ public:
|
||||||
GenericSecurityManager(
|
GenericSecurityManager(
|
||||||
pal::SecurityManager &palImpl,
|
pal::SecurityManager &palImpl,
|
||||||
pal::SecurityDb &dbImpl,
|
pal::SecurityDb &dbImpl,
|
||||||
GenericGap &gapImpl
|
pal::ConnectionEventMonitor &connMonitorImpl
|
||||||
) : _pal(palImpl),
|
) : _pal(palImpl),
|
||||||
_db(dbImpl),
|
_db(dbImpl),
|
||||||
_gap(gapImpl),
|
_connection_monitor(connMonitorImpl),
|
||||||
_default_authentication(0),
|
_default_authentication(0),
|
||||||
_default_key_distribution(KeyDistribution::KEY_DISTRIBUTION_ALL),
|
_default_key_distribution(KeyDistribution::KEY_DISTRIBUTION_ALL),
|
||||||
_pairing_authorisation_required(false),
|
_pairing_authorisation_required(false),
|
||||||
|
@ -433,7 +433,7 @@ private:
|
||||||
private:
|
private:
|
||||||
pal::SecurityManager &_pal;
|
pal::SecurityManager &_pal;
|
||||||
pal::SecurityDb &_db;
|
pal::SecurityDb &_db;
|
||||||
GenericGap &_gap;
|
pal::ConnectionEventMonitor &_connection_monitor;
|
||||||
|
|
||||||
AuthenticationMask _default_authentication;
|
AuthenticationMask _default_authentication;
|
||||||
KeyDistribution _default_key_distribution;
|
KeyDistribution _default_key_distribution;
|
||||||
|
|
|
@ -30,22 +30,23 @@
|
||||||
#include "ble/pal/EventQueue.h"
|
#include "ble/pal/EventQueue.h"
|
||||||
|
|
||||||
namespace ble {
|
namespace ble {
|
||||||
|
namespace pal {
|
||||||
|
|
||||||
class ConnectionEventHandler {
|
class ConnectionEventHandler {
|
||||||
public:
|
public:
|
||||||
virtual void on_connected(
|
virtual void on_connected(
|
||||||
connection_handle_t connection,
|
connection_handle_t connection,
|
||||||
Gap::Role_t role,
|
::Gap::Role_t role,
|
||||||
BLEProtocol::AddressType_t peer_address_type,
|
BLEProtocol::AddressType_t peer_address_type,
|
||||||
const BLEProtocol::AddressBytes_t peer_address,
|
const BLEProtocol::AddressBytes_t peer_address,
|
||||||
BLEProtocol::AddressType_t local_address_type,
|
BLEProtocol::AddressType_t local_address_type,
|
||||||
const BLEProtocol::AddressBytes_t local_address,
|
const BLEProtocol::AddressBytes_t local_address,
|
||||||
const Gap::ConnectionParams_t *connection_params
|
const ::Gap::ConnectionParams_t *connection_params
|
||||||
) = 0;
|
) = 0;
|
||||||
|
|
||||||
virtual void on_disconnected(
|
virtual void on_disconnected(
|
||||||
connection_handle_t connection,
|
connection_handle_t connection,
|
||||||
Gap::DisconnectionReason_t reason
|
::Gap::DisconnectionReason_t reason
|
||||||
) = 0;
|
) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -59,6 +60,7 @@ public:
|
||||||
virtual void set_connection_event_handler(ConnectionEventHandler *connection_event_handler) = 0;
|
virtual void set_connection_event_handler(ConnectionEventHandler *connection_event_handler) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace pal
|
||||||
|
} // namespace ble
|
||||||
|
|
||||||
#endif /* MBED_BLE_CONNECTION_EVENT_MONITOR */
|
#endif /* MBED_BLE_CONNECTION_EVENT_MONITOR */
|
|
@ -20,6 +20,7 @@
|
||||||
#include "platform/Callback.h"
|
#include "platform/Callback.h"
|
||||||
#include "ble/pal/GapTypes.h"
|
#include "ble/pal/GapTypes.h"
|
||||||
#include "ble/BLETypes.h"
|
#include "ble/BLETypes.h"
|
||||||
|
#include "ble/Gap.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
namespace ble {
|
namespace ble {
|
||||||
|
|
|
@ -1149,7 +1149,7 @@ bool GenericGap::initialize_whitelist() const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenericGap::set_connection_event_handler(ConnectionEventHandler *connection_event_handler)
|
void GenericGap::set_connection_event_handler(pal::ConnectionEventHandler *connection_event_handler)
|
||||||
{
|
{
|
||||||
_connection_event_handler = connection_event_handler;
|
_connection_event_handler = connection_event_handler;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ ble_error_t GenericSecurityManager::init(
|
||||||
init_signing();
|
init_signing();
|
||||||
}
|
}
|
||||||
|
|
||||||
_gap.set_connection_event_handler(this);
|
_connection_monitor.set_connection_event_handler(this);
|
||||||
|
|
||||||
_pal.generate_public_key();
|
_pal.generate_public_key();
|
||||||
|
|
||||||
|
|
|
@ -93,12 +93,14 @@ add_test(NAME GattClientTests COMMAND gatt-client-tests)
|
||||||
add_executable(security-manager-tests
|
add_executable(security-manager-tests
|
||||||
mbed_os_stub/mbed_assert.c
|
mbed_os_stub/mbed_assert.c
|
||||||
generic/SecurityManager/mock/MockPalSecurityManager.cpp
|
generic/SecurityManager/mock/MockPalSecurityManager.cpp
|
||||||
|
generic/SecurityManager/mock/MockPalSecurityDb.cpp
|
||||||
${PROJECT_SOURCE_DIR}/../source/generic/GenericSecurityManager.cpp
|
${PROJECT_SOURCE_DIR}/../source/generic/GenericSecurityManager.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(security-manager-tests PRIVATE
|
target_include_directories(security-manager-tests PRIVATE
|
||||||
"${PROJECT_SOURCE_DIR}/.."
|
"${PROJECT_SOURCE_DIR}/.."
|
||||||
"${PROJECT_SOURCE_DIR}/../../.."
|
"${PROJECT_SOURCE_DIR}/../../.."
|
||||||
|
"${PROJECT_SOURCE_DIR}/mbed_os_stub"
|
||||||
"${PROJECT_SOURCE_DIR}/generic/SecurityManager"
|
"${PROJECT_SOURCE_DIR}/generic/SecurityManager"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2018 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "MockPalSecurityDb.h"
|
||||||
|
|
||||||
|
namespace ble {
|
||||||
|
namespace pal {
|
||||||
|
namespace vendor {
|
||||||
|
namespace mock {
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constructor implementation of the mocked pal security manager
|
||||||
|
//
|
||||||
|
// WARNING: Do not remove; it speedup compile time.
|
||||||
|
|
||||||
|
MockPalSecurityDb::MockPalSecurityDb() { }
|
||||||
|
MockPalSecurityDb::~MockPalSecurityDb() { }
|
||||||
|
|
||||||
|
} // namespace ble
|
||||||
|
} // namespace pal
|
||||||
|
} // namespace vendor
|
||||||
|
} // namespace mock
|
|
@ -0,0 +1,192 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2018 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TESTS_GENERIC_SECURITYMANAGER_MOCK_MOCKPALSECURITYDB_H_
|
||||||
|
#define TESTS_GENERIC_SECURITYMANAGER_MOCK_MOCKPALSECURITYDB_H_
|
||||||
|
|
||||||
|
#include "gmock/gmock.h"
|
||||||
|
#include "ble/pal/SecurityDB.h"
|
||||||
|
|
||||||
|
namespace ble {
|
||||||
|
namespace pal {
|
||||||
|
namespace vendor {
|
||||||
|
namespace mock {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mock of ble::pal::SecurityDB
|
||||||
|
*/
|
||||||
|
class MockPalSecurityDb : public ble::pal::SecurityDb {
|
||||||
|
public:
|
||||||
|
MockPalSecurityDb();
|
||||||
|
|
||||||
|
virtual ~MockPalSecurityDb();
|
||||||
|
|
||||||
|
MOCK_METHOD1(get_entry, SecurityEntry_t*(connection_handle_t));
|
||||||
|
|
||||||
|
MOCK_METHOD1(get_entry, SecurityEntry_t*(const address_t &));
|
||||||
|
|
||||||
|
MOCK_METHOD4(
|
||||||
|
get_entry_local_keys,
|
||||||
|
void(
|
||||||
|
SecurityEntryKeysDbCb_t,
|
||||||
|
connection_handle_t,
|
||||||
|
const ediv_t &,
|
||||||
|
const rand_t &
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
get_entry_local_keys,
|
||||||
|
void(SecurityEntryKeysDbCb_t, connection_handle_t)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
set_entry_local_ltk,
|
||||||
|
void(connection_handle_t, const ltk_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD3(
|
||||||
|
set_entry_local_ediv_rand,
|
||||||
|
void(connection_handle_t, const ediv_t &, const rand_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
get_entry_peer_csrk,
|
||||||
|
void(SecurityEntryCsrkDbCb_t, connection_handle_t)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
get_entry_peer_keys,
|
||||||
|
void(SecurityEntryKeysDbCb_t, connection_handle_t)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
set_entry_peer_ltk,
|
||||||
|
void(connection_handle_t, const ltk_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD3(
|
||||||
|
set_entry_peer_ediv_rand,
|
||||||
|
void(connection_handle_t, const ediv_t &, const rand_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
set_entry_peer_irk,
|
||||||
|
void(connection_handle_t, const irk_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD3(
|
||||||
|
set_entry_peer_bdaddr,
|
||||||
|
void(connection_handle_t, bool, const address_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
set_entry_peer_csrk,
|
||||||
|
void(connection_handle_t, const csrk_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_local_csrk, const csrk_t*());
|
||||||
|
|
||||||
|
MOCK_METHOD1(set_local_csrk, void(const csrk_t &));
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_public_key_x, const public_key_t&());
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_public_key_y, const public_key_t&());
|
||||||
|
|
||||||
|
MOCK_METHOD2(set_public_key, void(const public_key_t &, const public_key_t &));
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_peer_sc_oob_address, const address_t&());
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_peer_sc_oob_random, const oob_rand_t&());
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_peer_sc_oob_confirm, const oob_confirm_t&());
|
||||||
|
|
||||||
|
MOCK_METHOD4(
|
||||||
|
get_sc_oob_data,
|
||||||
|
void(
|
||||||
|
address_t &,
|
||||||
|
oob_rand_t &,
|
||||||
|
oob_confirm_t &,
|
||||||
|
oob_rand_t &
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD0(get_local_sc_oob_random, const oob_rand_t&());
|
||||||
|
|
||||||
|
MOCK_METHOD3(
|
||||||
|
set_peer_sc_oob_data,
|
||||||
|
void(
|
||||||
|
const address_t &,
|
||||||
|
const oob_rand_t &,
|
||||||
|
const oob_confirm_t &
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD1(set_local_sc_oob_random, void(const oob_rand_t&));
|
||||||
|
|
||||||
|
MOCK_METHOD4(
|
||||||
|
connect_entry,
|
||||||
|
SecurityEntry_t*(
|
||||||
|
connection_handle_t,
|
||||||
|
BLEProtocol::AddressType_t,
|
||||||
|
const address_t &,
|
||||||
|
const address_t &
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD1(disconnect_entry, void(connection_handle_t));
|
||||||
|
|
||||||
|
MOCK_METHOD1(remove_entry, void(const address_t));
|
||||||
|
|
||||||
|
MOCK_METHOD0(clear_entries, void());
|
||||||
|
|
||||||
|
MOCK_METHOD2(get_whitelist, void(WhitelistDbCb_t, Gap::Whitelist_t *));
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
generate_whitelist_from_bond_table,
|
||||||
|
void(WhitelistDbCb_t, Gap::Whitelist_t *)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD2(
|
||||||
|
set_whitelist,
|
||||||
|
void(WhitelistDbCb_t, const Gap::Whitelist_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD1(
|
||||||
|
add_whitelist_entry,
|
||||||
|
void(const address_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD1(
|
||||||
|
remove_whitelist_entry,
|
||||||
|
void(const address_t &)
|
||||||
|
);
|
||||||
|
|
||||||
|
MOCK_METHOD0(clear_whitelist, void());
|
||||||
|
|
||||||
|
MOCK_METHOD0(restore, void());
|
||||||
|
|
||||||
|
MOCK_METHOD0(sync, void());
|
||||||
|
|
||||||
|
MOCK_METHOD1(set_restore, void(bool));
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace ble
|
||||||
|
} // namespace pal
|
||||||
|
} // namespace vendor
|
||||||
|
} // namespace mock
|
||||||
|
|
||||||
|
#endif /* TESTS_GENERIC_SECURITYMANAGER_MOCK_MOCKPALSECURITYDB_H_ */
|
|
@ -24,7 +24,7 @@
|
||||||
#ifndef MBED_SLEEP_H
|
#ifndef MBED_SLEEP_H
|
||||||
#define MBED_SLEEP_H
|
#define MBED_SLEEP_H
|
||||||
|
|
||||||
#include "sleep_api.h"
|
#include "hal/sleep_api.h"
|
||||||
#include "mbed_toolchain.h"
|
#include "mbed_toolchain.h"
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ void sleep_manager_sleep_auto(void);
|
||||||
* Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be
|
* Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be
|
||||||
* able to access the LocalFileSystem
|
* able to access the LocalFileSystem
|
||||||
*/
|
*/
|
||||||
__INLINE static void sleep(void)
|
static inline void sleep(void)
|
||||||
{
|
{
|
||||||
#if !(defined(FEATURE_UVISOR) && defined(TARGET_UVISOR_SUPPORTED))
|
#if !(defined(FEATURE_UVISOR) && defined(TARGET_UVISOR_SUPPORTED))
|
||||||
#if DEVICE_SLEEP
|
#if DEVICE_SLEEP
|
||||||
|
@ -158,7 +158,7 @@ __INLINE static void sleep(void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
MBED_DEPRECATED_SINCE("mbed-os-5.6", "One entry point for an application, use sleep()")
|
MBED_DEPRECATED_SINCE("mbed-os-5.6", "One entry point for an application, use sleep()")
|
||||||
__INLINE static void deepsleep(void)
|
static inline void deepsleep(void)
|
||||||
{
|
{
|
||||||
#if !(defined(FEATURE_UVISOR) && defined(TARGET_UVISOR_SUPPORTED))
|
#if !(defined(FEATURE_UVISOR) && defined(TARGET_UVISOR_SUPPORTED))
|
||||||
#if DEVICE_SLEEP
|
#if DEVICE_SLEEP
|
||||||
|
|
Loading…
Reference in New Issue