Bootstrap Master Entry
Bootstrap Master Entries are an extension of Bootstrap Entries that can be used for a set of endpoints without having to provision credentials for each endpoint. They contain:
-
An ID to be used in the psk identity (see Endpoint Credentials)
-
The master secret from which the secrets used by endpoints to authenticate to the LwM2M Bootstrap server are derived (see Endpoint Credentials)
-
A link to a Bootstrap Config. The config must have useLiveObjects, renewSecurityOnBootstrap, and autoProvisionDeviceOnBootstrap.enabled set to true.
-
Information about past Bootstrap sessions of endpoints using this Bootstrap Master Entry
When an endpoint bootstraps using a Bootstrap Master Entry, a Bootstrap Entry is automatically created for that endpoint. See the bootstrap sequence for more information.
Example of a Bootstrap Master Entry:
{
"id": "Kl77BbLBwh",
"name": "My Master Entry",
"security": {
"mode": "PSK",
"pskInfo": {
"secret": "5adc592c900f4dae08dc7d68984bd262689f931c0329ceffe3ad374368f20708"
}
},
"definition": {
"bootstrapConfigId": "686287c6babc0e5f6fe43e8a"
},
"activity": {
"bootstrapRequestCount": 1,
"lastBootstrapRequestDate": "2025-06-30T12:56:44.182Z",
"bootstrapFinishCount": 1,
"lastBootstrapFinishDate": "2025-06-30T12:56:46.604Z"
},
"created": "2025-06-30T12:49:16.794Z",
"updated": "2025-06-30T12:56:46.606Z"
}
| Field | Description |
|---|---|
id |
(mandatory) The Bootstrap Master Entry ID. It is generated and must be used in endpoints PSK identity, see Endpoint Credentials. |
name |
(mandatory) The Bootstrap Master Entry name. It is user-defined. |
security |
(mandatory) The security information to authenticate to the LwM2M Bootstrap server. |
security.mode |
(mandatory) The security mode used to authenticate to the LwM2M Bootstrap server. PSK (Pre-Shared Key) is the only mode available currently. |
security.pskInfo |
(mandatory) The master Pre-Shared Key (PSK) information to authenticate to the LwM2M Bootstrap server. The endpoint PSK secret is derived from it, see Endpoint Credentials. |
security.pskInfo.secret |
(mandatory) The PSK master secret key, as a hex-encoded string. It is generated. See Endpoint Credentials |
definition |
(optional) The Bootstrap Config parameters for the endpoints (must be defined for the Bootstrap to work). |
definition.bootstrapConfigId |
(optional) The identifier of the Bootstrap Config to use for the endpoints (must be defined for the Bootstrap to work). |
activity |
(read only) Information about past Bootstrap sessions of endpoints using this Bootstrap Master Entry. |
activity.bootstrapRequestCount |
(read only) The number of times a Bootstrap sequence has been initiated (a Bootstrap-Request has been received by the LwM2M server). |
activity.lastBootstrapRequestDate |
(read only) The last time a Bootstrap sequence was initiated (a Bootstrap-Request has been received by the LwM2M server). |
activity.bootstrapFinishCount |
(read only) The number of times a Bootstrap sequence has been successfully completed (a Bootstrap-Finish has been sent by the LwM2M server). |
activity.lastBootstrapFinishDate |
(read only) The last time a Bootstrap sequence has been successfully completed (a Bootstrap-Finish has been sent by the LwM2M server). |
created |
(read only) Date on which the Bootstrap Master Entry was created. |
updated |
(read only) Date on which the Bootstrap Master Entry was last updated. |
Endpoint credentials
The PSK identity must have the following format:
<endpointName>@<masterEntryId>
Where:
-
endpointName: The endpoint name used in the Bootstrap Request. -
masterEntryId: The Bootstrap Master Entry ID.
Replace <endpointName> and <masterEntryId> with your actual values (do not include the angle brackets).
|
Only alphanumeric characters (a-z, A-Z, 0-9) and special characters among : - _ are allowed in the endpointName.
|
The PSK secret is derived from the master secret and the endpoint name using HMAC-SHA256.
openssl:# ==================
# Linux
# ==================
endpointName=urn:android:device:9774d56d682e549c
masterSecret=efd9a6f6b82b9ecf8ef32cd08f681274e1cd17bfd2adc830d41d2d36d261b270
echo -n $endpointName | openssl dgst -sha256 -mac HMAC -macopt hexkey:$masterSecret
# ==================
# Windows (Commands)
# ==================
(echo|set /p="urn:android:device:9774d56d682e549c") | openssl dgst -sha256 -mac HMAC -macopt hexkey:efd9a6f6b82b9ecf8ef32cd08f681274e1cd17bfd2adc830d41d2d36d261b270
# Replace urn:android:device:9774d56d682e549c and efd9a6f6b82b9ecf8ef32cd08f681274e1cd17bfd2adc830d41d2d36d261b270 with your actual values
The derived secret with the example input values (in hexadecimal format):
e9a6992bd98f629d31cd12980fa1adaed011220cec2d81c2f59ae5ff07037f29
Where:
-
endpointName: The endpoint name used in the Bootstrap Request. -
masterSecret: The Bootstrap Master Entry PSK secret, in hexadecimal format.