简而言之,DRM系统提供一套机制对用户使用手机上的媒体内容(如ringtong,
mp3等)进行限制,如限制拷贝给第三方,限制使用次数或时限等,从而保护内容提供商的权利。建议读者可以阅读OMA DRM
的规范,以便更好的了解代码。
相关代码主要位于下列目录:
frameworks/base/media/java/android/drm/mobile1
frameworks/base/media/libdrm/moblile1
frameworks/base/media/libdrm/mobile2
packages/apps/Mms/src/com/android/mms/drm: drm
packages/providers/DrmProvider/src/com/android/providers/drm
下面先作简要分析:
frameworks/base/media/libdrm/moblile1应该是提供OMA DMA1.0的本地/c++
实现
frameworks/base/media/libdrm/moblile2应该是提供OMA DAM2.0的本地/c++
实现。
frameworks/base/media/java/android/drm/mobile1 对应用提供OMA DRM 1.0
(即frameworks/base/media/libdrm/moblile1)的java接口。目前尚没有OMA DRM
2.0的java接口,也就意味着OMA DRM 2.0在Android中尚未应用。
packages/apps/Mms/src/com/android/mms/drm 实现在MMS中如何使用DRM。
packages/providers/DrmProvider/src/com/android/providers/drm
?
下面再作具体介绍:
一 目录 frameworks/base/media/java/android/drm/mobile1
这个目录是OMA DRM 1.0的java 接口。
OMA DRM 1.0 定义了几个重要概念:
DRM消息(DRM message):用户下载的一条DRM内容。根据下面介绍的DRM内容
传输方式的不同,DRM消息中包含的内容亦有所不同,可能只包含一个未经加密的媒体对象;也可能即包含未加密的媒体对象,也包含一个权利对象;也可能只包含一个经过加密的媒体对象(.dcf)。
媒体对象 (media object):包含媒体资源,如一个mp3, ringtone等。
权利对象(Right object): 限制用户如何使用媒体对象。
OMA DRM 1.0 定义了DRM内容的四种传输方式:
1. Combined delivery: 这种传输方式中,媒体对象以未经加密的方式(plain) 与Right
object打成一个包,一块传输。这个包下载到手机设备上后,不允许转发给其他设备。
2. Forward lock: 这种传输方式是combined delivery的一个特例。媒体对象没有对应的Rigth
object。媒体对象不允许转发给其他设备
3. Separate delivery:
媒体对象和权利对象分别传输。媒体对象采用对称密钥加密,文件以.dcf为后缀。权利对象中则包含对应的密钥。
4. Superdistribution:类似separate delivery, 但媒体内容允许转发给其他设备。
相应地,本目录的代码中:
DrmConstraintInfo对象描述了(对媒体内容的)一组限制属性,如开始/结束使用日期,使用次数等;
DrmRights对象代表了一个OMA 权利对象。
DrmRightsManager管理设备上的Rigth Objects。所有下载的权利对象,不论是由separate delivery
还是 combined delivery,权利对象都要首先安装到设备上。
DrmRawContent代表一条DRM内容,分为两类:DRM_MIMETYPE_MESSAGE_STRING
--DRM内容是经combined delivery 或 forward lock传输的
(也即媒体对象没有加密,没有或者有一个权利对象); DRM_MIMETYPE_CONTENT_STRING -- DRM内容是经
separate delivery传输的(也即媒体对象是经过加密的dcf格式,不包含权利对象)。
DrmInputStream:这个对象从一个DrmRawContent对象中读出经过权利对象验证并解密后的(需要的话)媒体对象内容。这个内容之后就可以传给相关应用输出给用户。
二 目录frameworks/base/media/libdrm/moblile1
本目录真正实现DRM DRM 1.0。
drm1_jni.c提供对DrmRawContent中方法的本地实现;
objmng目录下是具体实现。frameworks/base/media/libdrm/mobile1/include/objmng/svc_drm.h中有关于每个方法的详细解释,基本思路是每打开一个Drm
内容,就创建一个session,然后提供一系列方法,以此session为参数,对Drm进行各种操作,如获取属性,读取解密后内容等。这里不再赘述。
分享到:
相关推荐
android DRM,关于android中DRM的分析
一种基于android DRM框架实现OMA DRM的方法
Android电子书DRM解决方案,如何使用DRM加密Android资源
Android电子书DRM解决方案借鉴.pdf
Android电子书DRM解决方案分享.pdf
jw player drm视频播放器(h5、web、android、ios)视频播放,带key
Android 设备DRM 信息检测工具
改文档详细解释了linux显卡驱动drm架构的结构,对各个子模块进行了比较详细的分析,如modesetting,内存管理,drm_helper等。值得参考,内容清晰
Widevine是google推出的一种DRM,支持从google指定的服务器上,下载经google加密的版权文件,如视频、应用等. 手机厂商可以通过Google的授权以获取Widevine DRM对应的软件包从而将Widevine DRM集成到自己的产品中。
drm driver 的中文翻译,算是比较好的资料了。可以参考英文版一起阅读。
神作。。从高通7系列硬件架构,Android Display SW架构,到Android显示系统的C/S架构,SurfaceFlinger系统服务等,详细分析了Android的显示机制。
drm 測試demo
RK3399的DRM-HOWTO测试 最近在学习与调试RK3399的DRM显示架构,网上有很多例程,其中介绍比较多的是来于David Herrmann’s Github的drm-howto.开源代码 但这些源码下载后执行make编译出来的执行文件只能在PC机上测试...
这个文档是准对INTEL平台的linux内核中有关Display相关的文档。INTEL使用DRM的显卡驱动框架来管理视频输出。文档对DRM代码框架作出了详细解释。
这是OMA组织的DRM 1.0版本规范,这在Android 3.0开始的系统中都是默认自带的,有兴趣的同学可以学习一下文档和源码。
作者通览了OMA DRM 1.0 的标准文档,将主要的内容整理成了此 PPT, 是全面了解oma drm 原理架构很好的入门材料。
DRM基本架构解析与实际网络环境搭建.pdf
PlayReady DRM系统的最新介绍 (2010 年7月)! PlayReady是微软配合新产品Silverlight而设计的DRM产品,Silverlight是微软提供的一套rich media端到端的解决方案
基于开放源码的DRM系统分析与再设计.nh
本文档是自己通过辛苦阅读DRM英文手册,反复理解DRM内核架构与模块之间的关系,写出来的,是原创的文档。后面还重点介绍了DRM平台子模块GEM,KMS组件中的CRTC、ENCODER、CONNECOTR、CMA等重要结构的初始化流程,便于...