dps-keygen
Version:
Helper tool to create master and device GroupSAS keys / create connection string
70 lines (53 loc) • 2.17 kB
Markdown
### How to use Azure IoT DPS Symm Key interface for Azure IoT C SDK
Clone the Azure IOT C SDK
```
git clone --recursive https://github.com/azure/azure-iot-sdk-c
```
Update `azure-iot-sdk-c/provisioning_client/samples/prov_dev_client_ll_sample/prov_dev_client_ll_sample.c`
with `code.c` on this folder.
Make sure your environment has the build dependencies.
[CLICK to check the DEPENDENCIES](https://github.com/Azure/azure-iot-sdk-c/blob/dps_symm_key/iothub_client/readme.md#compiling-the-c-device-sdk)
*If you are planning to build this on linux/unix, simply follow the steps below; otherwise,*
*previous link has details for compiling on Windows. Please make sure that you*
*have enabled `-Duse_prov_client:BOOL=ON` similar to steps given below*
Prepare the build
```
mkdir build && cd build
cmake -Duse_prov_client:BOOL=ON ..
```
Build!
```
make -j
```
find the binary `prov_dev_client_ll_sample` under the build folder
```
find . -name 'prov_dev_client_ll_sample'
```
Possibly, you will find it under `./provisioning_client/samples/prov_dev_client_ll_sample/prov_dev_client_ll_sample`
Run it!
### How it works?
On the sample project (`code.c`), we have used the `device id`(reg_id) and
`device key`(g_access_key) via `prov_dev_set_symmetric_key_info`
```
prov_dev_set_symmetric_key_info(reg_id, g_access_key);
```
`scope id` via `Prov_Device_LL_Create`
```
if ((handle = Prov_Device_LL_Create(global_prov_uri, scope_id, Prov_Device_MQTT_Protocol)) == NULL)
```
We were listening to the registration callback as shown below
```
if (Prov_Device_LL_Register_Device(handle, register_device_callback, &user_ctx, registation_status_callback, &user_ctx) != PROV_DEVICE_RESULT_OK)
```
Finally, Azure IoT DPS service returned with the registration details
```
static void register_device_callback(PROV_DEVICE_RESULT register_result, const char* iothub_uri, const char* device_id, void* user_context)
```
Using the details, we were able to concat the new `connectiong string`
```
size_t len = snprintf(NULL, 0,
"HostName=%s;DeviceId=%s;SharedAccessKey=%s",
iothub_uri,
device_id,
g_access_key);
```