iopsys-feed/bbfdm
Amin Ben Romdhane b8b02aabd3 bbfdm: Added bbf.secure to encode/decode values
Added a ubus method `bbf.secure` which allows encoding/decoding of values using sha512 hash or with a RSA private/public key pair
2024-03-21 13:50:22 +00:00
..
files bbfdm: 1.7.19 2024-03-21 18:03:00 +05:30
bbfdm.mk bbfdm: utility functions and micro-service handler 2024-03-12 14:31:19 +00:00
Config_bbfdm.in bbfdm: Added bbf.secure to encode/decode values 2024-03-21 13:50:22 +00:00
Makefile bbfdm: Added bbf.secure to encode/decode values 2024-03-21 13:50:22 +00:00
README.md bbfdm: Added bbf.secure to encode/decode values 2024-03-21 13:50:22 +00:00

BBFDM configuration options and utilities

bbfdm provides few compile time configuration options and compile time help utility called bbfdm.mk, this document aimed to explain the available usages and best practices.

Compilation options

Configuration option Description Default Value
CONFIG_BBF_VENDOR_LIST List of vendor extension directories iopsys
CONFIG_BBF_VENDOR_PREFIX Prefix for Vendor extension datamodel objects/parameters X_IOPSYS_EU_
CONFIG_BBF_TR143 Enable/Add TR-143 Data Model Support y
CONFIG_BBF_TR471 Enable/Add TR-471 Data Model Support y
CONFIG_BBF_MAX_OBJECT_INSTANCES Maximum number of instances per object 255
BBF_OBFUSCATION_KEY Hash used to encode/decode in bbf.secure object 371d530c95a17d1ca223a29b7a6cdc97e1135c1e0959b51106cca91a0b148b5e42742d372a359760742803f2a44bd88fca67ccdcfaeed26d02ce3b6049cb1e04

BBF_OBFUSCATION_KEY

bbfdm provides an ubus object called bbf.secure to allow encoding/decoding the values, bbf.secure currently support following methods internally to encode/decode

  • Encode/Decode using a predefined SHA512 Hash key
  • Encode/Decode using a private/public RSA key pair

The BBF_OBFUSCATION_KEY compile time configuration option used to defined the SHA512 HASH, if this option is undefined, then it usages a default value as mention in the above table.

User must override this parameter with their own hash value, to generate a hash user can run below command and copy the hash value to this option.

ex: User wants to use 'Sup3rS3cur3Passw0rd' as passkey, then can get the SHA512 sum with

$ echo -n "Sup3rS3cur3Passw0rd" | sha512sum
371d530c95a17d1ca223a29b7a6cdc97e1135c1e0959b51106cca91a0b148b5e42742d372a359760742803f2a44bd88fca67ccdcfaeed26d02ce3b6049cb1e04  -

Note: Additionally, user can install RSA private key in '/etc/bbfdm/certificates/private_key.pem' path, if private key is present bbf.secure shall use rsa private certificate for encrypt/decrypt function. In case of key not present in the pre-defined path, hash will be used for the same.

Helper utility (bbfdm.mk)

bbfdm provides a helper utility bbfdm.mk to install datamodel plugins in bbfdm core or in microservice directory.

Install datamodel DotSO/JSON plugin in bbfdm core

Utility to install the DotSO/JSON plugin in bbfdm core plugin path

# inputs:
#  $1 => package install directory
#  $2 => Plugin artifact

Example:

define Package/$(PKG_NAME)/install
	$(call BbfdmInstallPlugin,$(1),./files/etc/bbfdm/json/CWMPManagementServer.json)
endef

Install datamodel DotSO/JSON plugin in bbfdm core with priority

Its now possible to overwrite/remove core datamodel with plugin, so, if some datamodel objects/parameters are present in more than one plugin, order in which they loaded into memory becomes crucial, this Utility help to configure a priority order in which they gets loaded in memory.

# inputs:
#  $1 => package install directory
#  $2 => Priority of the installed plugin
#  $3 => Plugin artifact

Example:

define Package/$(PKG_NAME)/install
	$(call BbfdmInstallPluginWithPriority,$(1),01,$(PKG_BUILD_DIR)/bbf_plugin/bulkdata.json)
endef

Note: Last loaded plugin gets the highest priority

Install plugin into micro-service directory

Utility to install the plugin in datamodel microservice directory, ex. user wants to run a datamodel micro-service, it required to install the DotSO/JSON plugin into a non bbf core directory, this utility helps in installing the DotSO/JSON plugin in mentioned directory.

# inputs:
#  $1 => package install directory with micro-service directory
#  $2 => Plugin artifact

Example:

define Package/$(PKG_NAME)/install
	$(call BbfdmInstallPluginInMicroservice,$(1)/etc/bulkdata,$(PKG_BUILD_DIR)/bbf_plugin/bulkdata.json)
endef

Install datamodel micro-service input file

Utility to install the datamodel plugin input file into the bbfdm micro-service directory, so that bbfdm auto start the datamodel micro-service before main bbfdm process.

# inputs:
#  $1 => package install directory
#  $2 => Microservice input.json path

Example:

define Package/$(PKG_NAME)/install
	$(call BbfdmInstallMicroServiceInputFile,$(1),./files/etc/bulkdata/input.json)
endef