Home · All Classes · Grouped Classes · Annotated · Functions

DRM Agent Integration

DRM Agent Integration

Qtopia applications access DRM content through the use of plug-ins to the Qtopia document system. These plug-ins implement the QDrmContentPlugin interface which is used to retrieve content permissions and meta-data, trigger the activation of content with invalid permissions, read unecrypted data from protected files, and update license constraints.

A complete DRM agent integration is typically composed of three parts, a plug-in to the content system, a license and settings management application, and a Qtopia service. The QDrmAgentPlugin interface allows all three components to be delivered in a single plug-in library.

License Management and Settings Application

Qtopia includes the 'Licenses' application as a common utility for DRM agents to host license management and settings widgets. It is composed of a single QTabWidget in which each tab contains a different widget from the set created by a calls to QDrmAgentPlugin::createManagerWidgets() for each loaded agent plug-in. Widgets are grouped according to the agent which created them and in the order returned.

The source for the Licenses application is located at:

    src/settings/drmbrowser/

DRM Services

Qtopia utilises Qtopia Data Sharing (QDS) services to process data received through WAP Push, web download and MMS. Agents that wish to handle data received through these channels should provide a QDS service for each mime type handled. Data received through WAP push will be delivered to a service with the "push" attribute and a request data type matching the mime type of the data, web browsers and MMS clients will search for services with the "handle" attribute and possibly also the "drm" attribute. Services with the "handle" attribute (but not the "push" attribute) may also specify a response data type allowing conversion of some data types to a device localised format.

The QDS definition for a service which installs an OMA DRM v1 XML rights objects may be:

    [handleXmlRightsObject]
    RequestDataType=application/vnd.oma.drm.rights+xml
    ResponseDataType=
    Attributes="drm;handle;push"
    Description[]=Installs an OMA DRM v1 XML rights object.

A DRM service may also be used to perform activation actions requested of a DRM content plugin. A DRM service may be hosted in an application with higher privileges than that of the application requesting the activation making it possible to successfully request an activation which requires a rights download from an application without network privileges for example. Also because the activation is performed in a separate process it is possible to use blocking operations without causing the user interface of the application requesting the activation to become unresponsive.

Services provided by a DRM agent plugin are hosted in the Licenses application and should have "drmbrowser" as the service application.

Installation

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:

    $QPEDIR/plugins/drmcontent/

Agents that wish to utilise 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:

    $QPEDIR/plugins/drmagent/

OMA DRM

A number of classes are provided in libqtopiaomadrm to assist in developing a drm agent plugin for OMA DRM v2. These classes provide a partial implementation of the QDrmContentPlugin interface, define the OmaDrmAgent service and include license management and settings widgets.

The libqtopiaomadrm library is located in:

    src/libraries/qtopiaomadrm/

The service and QDS definition files for the OmaDrmAgent service are:

    etc/qds/OmaDrmAgent
    services/OmaDrmAgent

Beep Science OMA DRM Agent

Qtopia includes a reference integration of the Beep Science OMA DRM agent version 2.3.

Qtopia will attempt to auto detect the presence of the Beep Science DRM agent libraries when configured by searching for BSciAPI.h in the the include paths (including /usr/lib/bscidrm2/include), and for libdrmagent.so* in the libary paths. If it can find these files DRM will automatically be enabled unless the -no-drm configure switch was used.

The standard location for desktop builds of the Beep Science libraries is /usr/lib/ and for devices in the toolchain library path.

A device key and certificate are required by the Beep Science DRM plugin in order to authenticate the device during ROAP transactions, the plugin imports the the key file BSCI_Device.pem.key and the certificate file BSCI_Device.pem.crt from the <Qtopia Runtime Prefix>/etc/bscidrm directory when the agent is first initialized.

The Beep Science DRM agent libraries can be acquired by contacting Beep Science.

The source for the Beep Science DRM agent plugin is located in:

    src/plugins/drmagent/bscidrmagent


Copyright © 2007 Trolltech Trademarks
Qtopia 4.2.5