Zum Inhalt

Initialization of Locks

Initialization of Locks

System Requirements
  • BlueID SDK for C initializer distribution
  • Java Runtime Environment 8
  • Internet connection
Overview

The BlueID SDK for C initializer distribution contains the following tools for initializing one or several secured objects:

Keyword File Description
Initializer Library sdkforc-initializer-lib.jar For writing your own initializer
sdkforc-initializer-lib-javadoc.jar API documentation
Tool for initializing secured objects sdkforc-initializer.jar For initializing secured objects
Further information README.txt Link to documentation
version.txt Additional version information
BlueID Open Source License Agreement Supplement.pdf Information on open source licenses which apply
Internet Access Configuration

The tools require an internet connection, please configure your firewall to allow the following connection type:

Name Value
Protocol HTTPS
Port 443
Allowed hosts Your respective Device API URL

You can find all of our Device API URLs here: BlueID Environments

Initializing

Each secured object requires a unique device identification within the BlueID system. This device identification can be created using the standard initializer that comes along with the BlueID SDK for C initializer distribution. The initializer generates a new set of cryptographic keys for each secured object and sends it to the BlueID Trust Center in order to add it to its database. In response, the initializer receives the unique secured object ID for a new secured object. After the initializer received the unique secured object ID the initializer generates the desired output file(s). The usage of the output files is described below.

Using the initialization tool

To print usage information execute the following command on the command line:

java -jar sdkforc-initializer.jar [-h]

Synopsis:

java -jar sdkforc-initializer.jar --api-key KEY --environment ENV [--endianness ENDIAN] [--out-type [TYPE]+] <CHANNELS>

KEY

One of the provided API-Keys

ENV

The main BlueID Trust Centers can be set using INT or PROD

If you need to initialize for your own Trust Center, use --trust-center HOSTNAME instead of --environment ENV

ENDIANESS

LITTLE, BIG

TYPE

There are two possible output types that can be used to run a secured object:

  • BCF: A binary configuration image that can be flashed into the SO's non-volatile memory.

  • JSON: A JSON file (text-based file format) that can be used for further processing of the information produced by the initializer.

Furthermore you can define an additional output type, which doesn't contain sensitive information like private keys and client secrets:

  • META: A JSON file with identification information on the secured object without sensitive data.
CHANNELS

Available channels are Bluetooth Low Energy, socket, UART and NFC. They get defined in the following way:

  • --channel-btlespp [localname [service uuid]] (e.g. --channel-btlespp myBox4711 00005301-0000-002a-426c-756549442a00)
  • --channel-socket hostname [port] (e.g. --channel-socket 155.676.976.100 8080)
  • --channel-uart device (e.g. --channel-uart /dev/xxx)
  • --channel-nfcpki Activate support for NFC PKI cards

For more details use the help output. If you don't define any channel, Bluetooth Low Energy is used with a random local name.

Example Output: JSON
{
  "localPrivate": "0000000000000000000000000000000000000000000000000000000000000000",
  "operatorPublic": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "trustCenterUrl": "https://deviceapi-int.blueid.net/deviceapi",
  "localKeyType": "ASYMMETRIC_KEY_TYPE_EC_SECP256R1",
  "operatorKeyType": "ASYMMETRIC_KEY_TYPE_EC_SECP256R1",
  "connectionParameters": {
    "btleLocalName": "ZZZZZZZZ",
    "btleUuid": "000053010000002a426c756549442a00"
  },
  "apiKey": "ZZZZZZZZZZZZZZZZZZZZ",
  "operatorPublicLength": 64,
  "id": "ZZZZZZZZZZ",
  "version": "3.3",
  "endian": "C_LITTLE_ENDIAN",
  "localPrivateLength": 32
}
Example invocation via command line

A simple call of the initializer using default Bluetooth Low Energy settings is shown below. For your first tests add the --dry-run option to avoid creating real objects.

java -jar sdkforc-initializer.jar --api-key R3YNEUMV38DI29F76NLX --environment INT --dry-run
java -jar sdkforc-initializer.jar -a R3YNEUMV38DI29F76NLX -e INT --dry-run

This will initialize the secured object to the Integration environment for the user with the given API key.

A usual call for a device that supports BLE and NFC looks like this:

java -jar sdkforc-initializer.jar -a YOUR_API_KEY_HERE -e INT_OR_PROD --channel-btlespp --channel-nfcpki
Using an HTTPS proxy

It is also possible to use the initializer tool with your own proxy server. For this to work, the https.proxyHost and https.proxyPort Java properties must be set. An example invocation would look like this:

java -Dhttps.proxyHost=<ProxyIP> -Dhttps.proxyPort=<ProxyPort> -jar sdkforc-initializer.jar [...]

Writing your own initialization tool

For writing your own initializer, we provide a small library (incl. apiDoc) that is also used by our initializer tool described above. Please have a look at the following files:

  • sdkforc-initializer-lib-javadoc.jar
  • to unpack the documentation: jar -xfv sdkforc-initializer-lib-javadoc.jar
  • sdkforc-initializer-lib.jar