mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			feat(ble): Guard out SecurityManager code when role is disabled
							parent
							
								
									73f7ffb124
								
							
						
					
					
						commit
						5d73a03a64
					
				| 
						 | 
				
			
			@ -392,6 +392,7 @@ public:
 | 
			
		|||
    const GattClient &gattClient() const;
 | 
			
		||||
#endif // BLE_ROLE_GATT_CLIENT
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
    /**
 | 
			
		||||
     * Accessors to SecurityManager. All SecurityManager-related functionality
 | 
			
		||||
     * requires going through this accessor.
 | 
			
		||||
| 
						 | 
				
			
			@ -408,6 +409,7 @@ public:
 | 
			
		|||
     * BLE instance.
 | 
			
		||||
     */
 | 
			
		||||
    const SecurityManager &securityManager() const;
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Translate error code into a printable string.
 | 
			
		||||
| 
						 | 
				
			
			@ -1475,6 +1477,7 @@ public:
 | 
			
		|||
    }
 | 
			
		||||
#endif // BLE_ROLE_GATT_SERVER
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
    /**
 | 
			
		||||
     * Enable the BLE stack's Security Manager. The Security Manager implements
 | 
			
		||||
     * the cryptographic algorithms and protocol exchanges that allow two
 | 
			
		||||
| 
						 | 
				
			
			@ -1543,6 +1546,7 @@ public:
 | 
			
		|||
    {
 | 
			
		||||
        return securityManager().purgeAllBondingState();
 | 
			
		||||
    }
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set up a callback for timeout events. Refer to Gap::TimeoutSource_t for
 | 
			
		||||
| 
						 | 
				
			
			@ -1831,6 +1835,7 @@ public:
 | 
			
		|||
    }
 | 
			
		||||
#endif // BLE_ROLE_GATT_SERVER
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
    /**
 | 
			
		||||
     * Set up a callback for when the security setup procedure (key generation
 | 
			
		||||
     * and exchange) for a link has started. This will be skipped for bonded
 | 
			
		||||
| 
						 | 
				
			
			@ -1927,6 +1932,7 @@ public:
 | 
			
		|||
    {
 | 
			
		||||
        return securityManager().onPasskeyDisplay(callback);
 | 
			
		||||
    }
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    friend class BLEInstanceBase;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -218,6 +218,7 @@ public:
 | 
			
		|||
    virtual GattClient &getGattClient(void) = 0;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
    /**
 | 
			
		||||
     * Accessor to the vendor implementation of the SecurityManager interface.
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -237,6 +238,7 @@ public:
 | 
			
		|||
     * @see BLE::securityManager() SecurityManager
 | 
			
		||||
     */
 | 
			
		||||
    virtual const SecurityManager &getSecurityManager(void) const = 0;
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Process pending events present in the vendor subsystem; then, put the MCU
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -259,6 +259,8 @@ GattClient& BLE::gattClient()
 | 
			
		|||
 | 
			
		||||
#endif // BLE_ROLE_GATT_CLIENT
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
const SecurityManager& BLE::securityManager() const
 | 
			
		||||
{
 | 
			
		||||
    if (!transport) {
 | 
			
		||||
| 
						 | 
				
			
			@ -277,6 +279,8 @@ SecurityManager& BLE::securityManager()
 | 
			
		|||
    return transport->getSecurityManager();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
void BLE::waitForEvent(void)
 | 
			
		||||
{
 | 
			
		||||
    if (!transport) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1844,6 +1844,7 @@ void GenericGap<PalGapImpl, PalSecurityManager, ConnectionEventMonitorEventHandl
 | 
			
		|||
        e.peer_resolvable_private_address.data()
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
    // Now starts pairing or authentication procedures if required
 | 
			
		||||
    if (needs_pairing) {
 | 
			
		||||
        SecurityManager &sm = createBLEInstance()->getSecurityManager();
 | 
			
		||||
| 
						 | 
				
			
			@ -1853,6 +1854,7 @@ void GenericGap<PalGapImpl, PalSecurityManager, ConnectionEventMonitorEventHandl
 | 
			
		|||
        // TODO: GAP Authentication != Security Manager authentication
 | 
			
		||||
        // Needs to be implemented
 | 
			
		||||
    }
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <template<class> class PalGapImpl, class PalSecurityManager, class ConnectionEventMonitorEventHandler>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -114,6 +114,8 @@ public:
 | 
			
		|||
    virtual impl::GenericGattClientImpl &getGattClient();
 | 
			
		||||
#endif // BLE_ROLE_GATT_CLIENT
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the PAL Gatt Client.
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +133,8 @@ public:
 | 
			
		|||
     */
 | 
			
		||||
    virtual const SecurityManager &getSecurityManager() const;
 | 
			
		||||
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @see BLEInstanceBase::waitForEvent
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -224,6 +224,8 @@ impl::PalGattClientImpl& BLE::getPalGattClient()
 | 
			
		|||
}
 | 
			
		||||
#endif // BLE_ROLE_GATT_CLIENT
 | 
			
		||||
 | 
			
		||||
#if BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
SecurityManager& BLE::getSecurityManager()
 | 
			
		||||
{
 | 
			
		||||
    static vendor::cordio::SigningEventMonitor<impl::GenericSecurityManagerImpl> signing_event_monitor;
 | 
			
		||||
| 
						 | 
				
			
			@ -242,6 +244,8 @@ const SecurityManager& BLE::getSecurityManager() const
 | 
			
		|||
    return const_cast<const SecurityManager&>(self.getSecurityManager());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // BLE_ROLE_SECURITY
 | 
			
		||||
 | 
			
		||||
void BLE::waitForEvent()
 | 
			
		||||
{
 | 
			
		||||
    static Timeout nextTimeout;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue