Agents that don't require a license management application or service, or wish to implement that functionality in their own application should create a plug-in library for a QDrmContentPlugin and install it to:
Agents that wish to utilize the common license management and settings application or expose a service in the DRM server process should should create a plug-in library for a QDrmAgentPlugin and install it to:
Beep Science OMA DRM Agent
Qt Extended includes a reference integration of the Beep Science OMA DRM agent version 2.4.
The Beep Science DRM agent plug-in can be included in a Qt Extended build by passing the -drm switch to configure or excluded with the -no-drm switch. The -drm switch is the default option for desktop builds of Qt Extended and -no-drm is the default for device builds.
When Qt Extended is configured with the -drm switch it will attempt to build a small test program that links against the Beep Science DRM agent libraries to determine if the DRM agent plug-in can be built. The default installation path for agent headers is /usr/local/include/bscidrm2.4 and for libraries /usr/local/lib/bscidrm2.4, if the agent is not installed to these locations or other standard include and library paths then the installation paths will need to passed to configure with the -I and -L switches. The default paths are absolute so if the libraries are not in the standard library paths of the tool chain then then the path to the library must be passed to configure. The library binaries are copied into the Qt Extended image so it is not necessary to have them installed in the rootfs of the device.
Configure for DRM enabled desktop debug build with the agent headers and libraries installed in the default paths:
$QTOPIA_DEPOT_PATH/configure -debug -edition phone
Configure for DRM enabled greenphone build with the agent headers installed in the default path, and libraries in /opt/toolchains/greenphone/gcc-4.1.1-glibc-2.3.6/arm-linux/arm-linux/usr/local/lib/bscidrm2.4
$QTOPIA_DEPOT_PATH/configure -device greenphone -drm -L/opt/toolchains/greenphone/gcc-4.1.1-glibc-2.3.6/arm-linux/arm-linux/usr/local/lib/bscidrm2.4
The directory in which the DRM agent's rights database and logs are stored on a device is obtained from the value of the BSCI_DATABASE_PATH which should be defined in the device's custom.h file. If BSCI_DATABASE_PATH is not defined then the agent will attempt to use the value of the environment variable BSCI_DATABASE_PATH, it that also fails then the path defaults to $HOME/Applications/Qtopia/DRM.
The DRM agent database needs to be initialized with a device key and certificate chain in order to authenticate the device during ROAP transactions. When the database is constructed Qt Extended will import the key file BSCI_Device_1033.pem.key and certificate chain file BSCI_DeviceChain.pem.crt from the <Qt Extended Runtime Prefix>/etc/bscidrm directory. These files and the root certificate chain bscidrm2.crt are not included in a Qt Extended distribution and need to be added to the source tree in etc/bscidrm. The import step can be avoided by pre-installing a database on the device.
The Beep Science DRM agent libraries can be acquired by contacting Beep Science.
The source for the Beep Science DRM agent plug-in is located in:
src/plugins/drmagent/bscidrmagent