From January to April 2015 I co-developed an implementation of Apple’s HomeKit Accessory Protocol for Oberon microsystems AG. We targeted the library for Bluetooth Low Energy chipsets, such as the Nordic Semiconductor nRF51 (ARM Cortex-M0) which boasts 32 kB of RAM and 256 kB of ROM (in our variant). Initial pairing on the Cortex-M0 required slightly less than 30 seconds - which was in-line of the then minimal requirements for HomeKit and BLE. However, reconnecting a paired HomeKit device was much faster due to Ed25519 and ChaCha20-Poly1305 - this made the device “usable” from a customer perspective. The long pairing delay was due to the Secure Remote Password Protocol (SRP) which handles the initial exchange of the HomeKit Code. SRP required a 384bit integer multiplication which put a strain on the 32 kB ram on the nRF51.
The library was made available for licensing as
OberonHAP. And I moved on to another project at ETH/MeteoSwiss.
When I returned at the beginning of 2018 I helped customers integrate the next version of the library (now with IP support) into their ecosystem by providing binary releases for their respective platforms. We targeted 50+ different platform variants using a huge variety of compilers (Clang, GCC, IAR, Keil, Microsoft VS2008+VS2019 and Xtensa). Due to the additional complexity of the IP support, the support for Cortex-M0 has long gone.
Oberon microsystems AG is now listed as a contributor to the Apple HomeKit ADK available on Github.
The cryptographic core which powered OberonHAP is available as a separate library OCrypto.