I am implementing Just Works pairing+bonding with LE Secure Connection on a PSoC 4 BLE and have it working with Android and iOS clients. However, pairing fails immediately with Windows 10 due to "Invalid parameters" (reason 0x0A). I can reproduce this using the BLE 4.2 Data Length Security Privacy 1.0 example project and have attached the project. The only modification I made was to add a call to CyBle_GapSetIoCap(CYBLE_GAP_IOCAP_NOINPUT_NOOUTPUT); in the CYBLE_EVT_STACK_ON event handler.
I have also attached a BLE protocol analyzer trace showing the pairing failure with a windows client. You can open it with Teledyne LeCroy Wireless Protocol Suite. Is this a known issue? How can it be resolved? I have this kind of pairing working on windows 10 with a PSoC 6 BLE part.
I figured out that I wasn't generating a new public/private key pair for LE secure, so the debug keys were being used and windows was rejecting it. Good on them for enforcing security! I fixed this by calling CyBle_GapGenerateLocalP256Keys() in the CYBLE_EVT_GAP_DEVICE_CONNECTED event handler. The example project should really be updated to include this call as well.