Symbian3/PDK/Source/GUID-84B6389A-55CC-53EB-8725-65F753FD7217.dita
changeset 1 25a17d01db0c
child 3 46218c8b8afa
equal deleted inserted replaced
0:89d6a7a84779 1:25a17d01db0c
       
     1 <?xml version="1.0" encoding="utf-8"?>
       
     2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
       
     3 <!-- This component and the accompanying materials are made available under the terms of the License 
       
     4 "Eclipse Public License v1.0" which accompanies this distribution, 
       
     5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
       
     6 <!-- Initial Contributors:
       
     7     Nokia Corporation - initial contribution.
       
     8 Contributors: 
       
     9 -->
       
    10 <!DOCTYPE concept
       
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
       
    12 <concept id="GUID-84B6389A-55CC-53EB-8725-65F753FD7217" xml:lang="en"><title>Content
       
    13 Access Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
       
    14 <p>The Content Access Framework (CAF) provides a common interface for applications
       
    15 to access Digital Rights Management (DRM) protected content. An application
       
    16 might be a video or sound player or an internet browser and DRM content might
       
    17 be a media files or a game. </p>
       
    18 <section><title>Purpose</title> <p>CAF provides a single point of access to
       
    19 all functionality related to DRM-protected content. </p> <ul>
       
    20 <li id="GUID-15DE43E1-3623-54FF-8AA5-0156D4809199"><p>Access to DRM-protected
       
    21 content for content consumers, such as media players or software installers </p> </li>
       
    22 <li id="GUID-CAD976B3-5AF4-53D2-B4C9-BB20D329AA88"><p>Management of DRM protected
       
    23 content </p> </li>
       
    24 <li id="GUID-FC614936-1F4A-557D-A61C-BF876050F5A2"><p>Import DRM protected
       
    25 information </p> </li>
       
    26 <li id="GUID-1DA7B843-171D-5C58-8157-B984C8218987"><p>Notification on DRM
       
    27 related events, such as rights expiry </p> </li>
       
    28 <li id="GUID-BE79AE4B-4DAD-5F91-A7BC-8FAC2143E858"><p>Implementation of new
       
    29 DRM schemes </p> </li>
       
    30 </ul> </section>
       
    31 <section id="GUID-290C30C0-B088-534F-992E-CA2ED277F07D"><title>Key concepts
       
    32 and terms</title> <dl>
       
    33 <dlentry>
       
    34 <dt>Content</dt>
       
    35 <dd><p>Content is logically-coupled data such as a movie, a soundtrack or
       
    36 a ringtone forming a content file. </p> </dd>
       
    37 </dlentry>
       
    38 </dl> <dl>
       
    39 <dlentry>
       
    40 <dt>Content consumer</dt>
       
    41 <dd><p>Content consumers are applications such as media players or software
       
    42 installers that access DRM-protected content. </p> </dd>
       
    43 </dlentry>
       
    44 </dl> <dl>
       
    45 <dlentry>
       
    46 <dt>Content access agent</dt>
       
    47 <dd><p>A content access agent is an ECom plug-in which implements the CAF
       
    48 interface and performs the following functions: </p> <ul>
       
    49 <li id="GUID-96ACA45F-F89C-5F83-B2FC-FE19F7EEECB0"><p>Provides access to protected
       
    50 content such as MPEG and MP3, and allows viewing them as plain text (even
       
    51 if the content is encrypted). </p> </li>
       
    52 <li id="GUID-2B5D35F4-71F7-52A2-A596-24817C68E769"><p>Provides indirect access
       
    53 to a private server directory. </p> </li>
       
    54 <li id="GUID-A2DA01FB-721E-5E9C-B61C-3A5E28034971"><p>Provides platform security
       
    55 enforcement. CAF does not provide any capability enforcement so the agent
       
    56 must police access to the APIs. The agent can choose to deny some operations
       
    57 in the CAF API based upon both the application's capabilities and the agent's
       
    58 policy. </p> </li>
       
    59 </ul> </dd>
       
    60 </dlentry>
       
    61 </dl> <dl>
       
    62 <dlentry>
       
    63 <dt>F32 agent</dt>
       
    64 <dd><p>The F32 agent provides access to unprotected files. CAF treats the
       
    65 F32 agent as a special case. If no other agent is responsible for a file or
       
    66 directory, the F32 Agent is used. </p> <p>The F32 agent runs in the same process
       
    67 and thread as the calling application, so its file operations are limited
       
    68 to the capability of the calling application's. </p> </dd>
       
    69 </dlentry>
       
    70 </dl> <dl>
       
    71 <dlentry>
       
    72 <dt>Handling and sharing content in a private directory </dt>
       
    73 <dd><p>Few agents can provide access to files stored in their private directory.
       
    74 They can share their files existence to applications through implementation
       
    75 of the <xref href="GUID-D7457871-5361-3684-9A95-FBDB9C2689DD.dita#GUID-D7457871-5361-3684-9A95-FBDB9C2689DD/GUID-0306A1CE-9EAA-3008-A9D7-1AACA95A6081"><apiname>ContentAccess::CAgentManager::GetDir()</apiname></xref> function.
       
    76 In the file system the private directories have the format: </p> <p> <codeph>\private\xxxxxxxx\directory_1\...directory_n\filename.ext</codeph> </p> <p>where <codeph>xxxxxxxx</codeph> is the UID of the agent. </p> <p>CAF
       
    77 will translate that path so applications see the file as: </p> <p> <codeph>\private\agent_name\directory_1\...directory_n\filename.ext</codeph> </p> <p>where <codeph>agent_name</codeph> is the name of the agent. </p> <p>When
       
    78 an application opens a file stored in the private directory, CAF selects the
       
    79 agent which handles that content based upon the name in the path. If the file
       
    80 is not stored in a private directory, CAF asks each of the agents in turn
       
    81 whether they support the file. If no agent supports the file, it will be read
       
    82 as plaintext using the F32Agent. </p> </dd>
       
    83 </dlentry>
       
    84 </dl> </section>
       
    85 <section><title>Architecture</title> <p>CAF provides interfaces for applications
       
    86 to read both unprotected and DRM protected content. It behaves as a switch
       
    87 between different Content Access Agents. </p> <p>CAF uses a client-server
       
    88 architecture. The CAF client DLL must be linked with the client process. CAF
       
    89 agents can be implemented as plug-ins to the CAF client if they do not require
       
    90 access to keys or rights. An agent requiring access to encryption or decryption
       
    91 of keys, or rights must be implemented as a server-side plug-in. A server
       
    92 side plug-in must ensure that only applications with the right capabilities
       
    93 can access the content. </p> <p>Each agent is an ECOM plug-in implementing
       
    94 the content access agent interface UID 0x10204740. The agents can run in separate
       
    95 processes and need not have the capability to open files in the TCB or private
       
    96 server directories using just a file name. Files must be opened by the process
       
    97 that owns them and an open <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> handle passed to CAF to
       
    98 read it. </p> <p>In the following diagram the yellow blocks represent the
       
    99 components provided by Symbian and the blue blocks represent the components
       
   100 that must be implemented by device creators. </p> <fig id="GUID-40498A21-44F3-5250-9E02-3ACF30EC2BF9">
       
   101 <title>              CAF Architecture            </title>
       
   102 <image href="GUID-B93C26B8-D767-5341-A629-1A5714A20992_d0e606022_href.jpg" placement="inline"/>
       
   103 </fig> <p> <b>Note</b>: The F32 agent is a client-side implementation as it
       
   104 is used for accessing unprotected content only. </p> </section>
       
   105 <section><title>Key classes</title> <p>The following table summarizes the
       
   106 important classes provided by CAF: </p> <p> <b>Note</b>: The classes below
       
   107 are defined within the namespace <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita"><apiname>ContentAccess</apiname></xref>  </p> <table id="GUID-7399345A-ADC8-57B1-B3D5-C8DD93F0F626">
       
   108 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
       
   109 <thead>
       
   110 <row>
       
   111 <entry>Class</entry>
       
   112 <entry>Description</entry>
       
   113 </row>
       
   114 </thead>
       
   115 <tbody>
       
   116 <row>
       
   117 <entry><p> <xref href="GUID-45942AF3-2D3E-3D22-88D0-904D70074357.dita"><apiname>CSupplier</apiname></xref>  </p> </entry>
       
   118 <entry><p>Delivers and transforms content into a secure format for storing
       
   119 it in the device </p> </entry>
       
   120 </row>
       
   121 <row>
       
   122 <entry><p> <xref href="GUID-EF3C33C0-F02E-3C35-B289-3800631EDC3A.dita"><apiname>CContent</apiname></xref>  </p> </entry>
       
   123 <entry><p>Provides read access to content (including protected content) stored
       
   124 in a device. </p> </entry>
       
   125 </row>
       
   126 <row>
       
   127 <entry><p> <xref href="GUID-7F3D9E35-A8FC-35A6-8036-23396BAADFDC.dita"><apiname>CManager</apiname></xref>  </p> </entry>
       
   128 <entry><p>Manages files and content access agents </p> </entry>
       
   129 </row>
       
   130 <row>
       
   131 <entry><p> <xref href="GUID-C4B8AE31-6ABD-3FEA-88DD-3B4EE13ACF49.dita"><apiname>CRightsManager</apiname></xref>  </p> </entry>
       
   132 <entry><p>Manages DRM rights for a specific CAF agent </p> </entry>
       
   133 </row>
       
   134 <row>
       
   135 <entry><p> <xref href="GUID-136D0282-4C73-33E9-B9D4-9CE92A33BF75.dita"><apiname>CData</apiname></xref>  </p> </entry>
       
   136 <entry><p>Allows clients to read data from a content object </p> </entry>
       
   137 </row>
       
   138 <row>
       
   139 <entry><p> <xref href="GUID-D90E390E-0A4F-357D-98BF-C445CC2E7EB0.dita"><apiname>CAgentFactory</apiname></xref>  </p> </entry>
       
   140 <entry><p>Represents the ECom interface for a CAF Agent. A CAF agent must
       
   141 implement a concrete factory derived from <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-798F4B18-D6AE-36B9-B03F-C1FC55266CB5"><apiname>ContentAccess::CAgentFactory</apiname></xref>. </p> </entry>
       
   142 </row>
       
   143 </tbody>
       
   144 </tgroup>
       
   145 </table> <p>The above APIs are grouped as follows: </p> <p><b>Supplier API </b> </p> <p>The
       
   146 classes <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-0CE549BA-2F8C-3101-AD01-A1BF15C4EAE4"><apiname>ContentAccess::CSupplier</apiname></xref> and <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-E952CB96-3638-321A-B9BC-01C559FB8F4C"><apiname>ContentAccess::CImportFile</apiname></xref> together
       
   147 represents the supplier API. </p> <p>The Supplier API handles the delivery
       
   148 and transformation of content. It is used to transform DRM protected files
       
   149 when they arrive on a device into a compatible format for storing it securely
       
   150 on the device. It is also used to intercept content and ensure it is stored
       
   151 in an agent's private directory. </p> <p><b>Consumer API </b> </p> <p>The
       
   152 classes <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-FC40011B-32D3-328B-BB59-35BEF46A215A"><apiname>ContentAccess::CContent</apiname></xref> and <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-B54C8391-FE69-324C-AC0A-1E88C2555F00"><apiname>ContentAccess::CData</apiname></xref> together
       
   153 represents the consumer API. </p> <p>The consumer API allows applications
       
   154 to view the content as plain text, regardless of how it is actually stored
       
   155 on the device. (For instance, it might be encrypted). It is used by applications
       
   156 to render content and multimedia plug-ins. <b>Note</b>: Rendering implies
       
   157 reading data from a file, transforming it, then playing or displaying it on
       
   158 the device. </p> <p><b>Manager API </b> </p> <p>The <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-671191B1-B249-3DD3-A5E8-6F1A41A371C8"><apiname>ContentAccess::CManager</apiname></xref> class,
       
   159 which manages the files and content access agents forms the manager API. </p> <p><b>Rights
       
   160 Manager API </b> </p> <p>The <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-2CBEF3AA-7101-3247-BAED-79B624CEBBD1"><apiname>ContentAccess::CRightsManager</apiname></xref> class,
       
   161 which manages DRM rights within a particular DRM agent forms the rights manager
       
   162 API. </p> <p><b>Agent API </b> </p> <p>The <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-798F4B18-D6AE-36B9-B03F-C1FC55266CB5"><apiname>ContentAccess::CAgentFactory</apiname></xref> class
       
   163 forms the agent interface. It allows to integrate new agents at a later date,
       
   164 dynamically if required. The agent's factory produces products derived from
       
   165 the following: </p> <ul>
       
   166 <li id="GUID-72BCBDF7-5352-5907-902F-42CAB9C9BF55"><p> <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-983AF0B0-F0FD-31C6-94DF-C695A5D2B2D0"><apiname>ContentAccess::CAgentContent</apiname></xref>  </p> </li>
       
   167 <li id="GUID-35289C35-01FA-52A5-8AFF-BBF3F870AA87"><p> <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-D9B55B22-9A2D-3475-80CB-37D44E11F34B"><apiname>ContentAccess::CAgentData</apiname></xref>  </p> </li>
       
   168 <li id="GUID-4CF57B3A-8D8F-5B03-9E4A-A0A12A71FF53"><p> <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-89000D71-032A-3F08-947C-AF7006A06D2F"><apiname>ContentAccess::CAgentImportFile</apiname></xref>  </p> </li>
       
   169 <li id="GUID-B7CA6E3F-59CA-5CA1-A65B-E055B5ECCC8B"><p> <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-D7457871-5361-3684-9A95-FBDB9C2689DD"><apiname>ContentAccess::CAgentManager</apiname></xref>  </p> </li>
       
   170 <li id="GUID-871A9A11-7705-50DC-B528-8357FCD1A997"><p> <xref href="GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601.dita#GUID-0F5CE9B5-E674-3962-8376-CFB1ECB2F601/GUID-441831EC-2FC0-340E-B276-BFFA00665FD2"><apiname>ContentAccess::CAgentRightsManager</apiname></xref>  </p> </li>
       
   171 </ul> </section>
       
   172 <section><title>Typical uses</title> <p>CAF provides interfaces for implementing
       
   173 and using CAF agents. CAF agents allows authorised users to access the DRM
       
   174 protected content for installation and playback. CAF APIs can be used to perform
       
   175 the following tasks: </p> <ul>
       
   176 <li id="GUID-02285849-C4FA-58AC-BFE1-0D77A9A5FF51"><p>Handling delivery and
       
   177 transformation of DRM protected content. For more information, see <xref href="GUID-1B20D403-5FC9-5A61-9D2B-8ACB9D73423C.dita">Supplier
       
   178 API Tutorial</xref>. </p> </li>
       
   179 <li id="GUID-E039C0ED-5A67-5326-8431-047985855B23"><p>Providing services for
       
   180 applications that render content and multimedia plug-ins. For more information,
       
   181 see <xref href="GUID-09A760FD-4C2A-5F79-91F2-DCC25A63699C.dita">Consumer API Tutorial</xref>. </p> </li>
       
   182 <li id="GUID-769084EB-0B7A-514B-9453-9277DBD9D4E1"><p>Managing files and CAF
       
   183 agents. For more information, see <xref href="GUID-920CF819-645B-5705-8017-C1FAD7C6ABAF.dita">Manager
       
   184 API Tutorials</xref>. </p> </li>
       
   185 <li id="GUID-E8EF07A8-4348-5F42-918C-F2BE7877EF31"><p>Managing DRM rights
       
   186 within a particular DRM agent. For more information, see <xref href="GUID-77578F7E-E6E0-5177-99B2-E586DD6DD0C6.dita">Rights
       
   187 Manager API Tutorial</xref>. </p> </li>
       
   188 </ul> </section>
       
   189 </conbody><related-links>
       
   190 <link href="GUID-986EBD34-DE90-59BA-8A5F-E6E48845F18E.dita"><linktext>CAF Recogniser
       
   191 Config</linktext></link>
       
   192 <link href="GUID-AD61E913-9720-5F6B-8386-680384165E87.dita"><linktext>CAF Streaming
       
   193 Support</linktext></link>
       
   194 </related-links></concept>